انتقل فريق منصة العمل الحر من بناء العقود إلى سؤال يسبقها كلها: عندما يريد عميل أن يدفع بعملة رقمية، أو يريد مستقل أن يحول ما استلمه إلى عملته المحلية، فإن أحدهما يذهب إلى منصة تداول، يضع فيها أمراً، فيتغير رصيده بعد ثوان. ولكن ما الذي يحدث فعلاً داخل تلك المنصة؟ من يحدد السعر؟ ولماذا يختلف السعر الذي يراه عن السعر الذي ينفذ به إذا كان أمره كبيراً؟ وأين تذهب أمواله بينما هي على المنصة؟ وهذه أسئلة يجب أن يفهمها الفريق لأنها تحدد ما يقوله للعميل، وأين المخاطر التي قد تصيب أموال المنصة نفسها إذا تعاملت مع منصة تداول.
ولتوضيح أهمية الفهم، تخيل أن المنصة الناشئة قررت أن تقبل الدفع بعملة رقمية، فتحولها فوراً إلى عملتها المحلية عبر منصة تداول، حتى لا تتحمل تقلب السعر. القرار بسيط في ظاهره، ولكن تنفيذه يفتح أسئلة كثيرة: بأي نوع أمر تحول حتى لا تخسر في الانزلاق؟ وكم تترك على المنصة وكم تسحب؟ وماذا يحدث لأموالها لو تعثرت المنصة بين الإيداع والسحب؟ وكل هذه الأسئلة تحتاج أن تفهم ما يحدث داخل المنصة فعلاً، لا أن تضغط زراً وتثق. وهذا ما سوف نبنيه في هذا المقال من الصفر، كما بنينا كل شيء في هذا المسار: من المشكلة، إلى الآلية، إلى الثمن.
وهذا المقال تعليمي تقني فقط، ولا يتضمن أي نصيحة استثمارية أو مالية، ولا يوصي بأي منصة ولا عملة ولا تداول، ولا يقول إن التداول مسموح أو ممنوع في أي بلد، فهذا سؤال نظامي يجاب عنه من مصادره الرسمية، وموقف الجهات الرسمية في المملكة موضوع مقال مستقل في هذه المرحلة. وهو أول مقال في مرحلة التداول والمنصات والحفظ، ويبني على ما شرحناه عن الأرصدة والمعاملات في مقال كيف يعمل Ethereum وعن المحافظ في مقالات سابقة.
وسوف نناقش في هذا المقال ما يلي:
- لماذا لا يوجد سعر واحد، وما هو دفتر الأوامر Order Book، بتجربة نشغل فيها محرك مطابقة بسيط.
- كيف يطابق المحرك الأوامر بأولوية السعر ثم الوقت، مع تنفيذ حقيقي نراه بأرقامه.
- أنواع الأوامر: السوقي والمحدد، والانزلاق Slippage الذي يكبر مع حجم الأمر، بأرقام من التجربة.
- الرسوم: نموذج صانع ومتذوق Maker-Taker، وكم تكلف الصفقة قبل أي حركة سعر.
- ماذا يحدث داخل المنصة المركزية: المطابقة خارج السلسلة، والدفتر الداخلي، وحفظ المفاتيح.
- المنصة المركزية CEX والمنصة اللامركزية DEX، والمخاطر، وحادثة FTX، وقائمة تحقق.
لماذا لا يوجد سعر واحد؟
أول خطأ في فهم منصات التداول أن تظن أن للعملة سعراً واحداً تعرضه المنصة. الحقيقة أن السعر الذي تراه ليس إلا منتصف شيء أكبر: في كل لحظة هناك أناس يريدون البيع بأسعار مختلفة، وأناس يريدون الشراء بأسعار مختلفة، وكل هذه العروض مرتبة في قائمة تسمى دفتر الأوامر Order Book. والمنصة لا تملك العملة ولا تحدد سعرها، وإنما تجمع عروض الناس وتطابق من يريد البيع بمن يريد الشراء عندما يتفقان على سعر.
وهذه ليست خاصية للعملات الرقمية وحدها، فكل سوق منظم يعمل بدفتر أوامر: أسواق الأسهم والعملات والسلع كلها كذلك، ومن يفهم دفتر أوامر العملات الرقمية يفهم أي سوق مالي. والفرق الوحيد أن بعض منصات العملات الرقمية تعمل طوال الوقت دون إغلاق، وأن أزواجها قد تكون أقل سيولة بكثير من الأسهم الكبيرة، فيكون دفترها أرق وانزلاقها أكبر. ولذلك المفاهيم التي سوف نراها، السعر والفارق والعمق والانزلاق والرسوم، مفاهيم مالية عامة يستفيد منها الفريق في أي تعامل مالي، لا في العملات الرقمية فقط.
ولنرى دفتر الأوامر بأعيننا، كتبنا محرك مطابقة بسيطاً بلغة Python، يرتب العروض ويطابقها، وهو تعليمي بحت وعلى زوج تجريبي لا علاقة له بأي عملة حقيقية ولا مال. الملف orderbook.py فيه الدفتر والمطابقة، والسكربت 01-book.py يضع عدة عروض بيع وشراء حول سعر افتراضي 100، ثم يعرض الدفتر:
from orderbook import OrderBook
b = OrderBook()
for px, q in [(99.90, 5), (99.80, 8), (99.70, 12), (99.50, 20)]:
b.limit("buy", px, q, "maker")
for px, q in [(100.10, 6), (100.20, 9), (100.30, 15), (100.50, 25)]:
b.limit("sell", px, q, "maker")
bb, ba = b.best_bid(), b.best_ask()
print(f"best bid {bb:.2f} best ask {ba:.2f} spread {ba-bb:.2f} "
f"({(ba-bb)/((ba+bb)/2)*1e4:.1f} bps) mid {(ba+bb)/2:.3f}")نشغله في Container مؤقت دون تثبيت شيء:
docker run --rm -v "$PWD:/lab" -w /lab python:3.13-slim python 01-book.pyوالمخرج سوف يكون كما يلي:
best bid 99.90 best ask 100.10 spread 0.20 (20.0 bps) mid 100.000
order book depth (price : resting quantity):
ask 100.50 | ######################### 25
ask 100.30 | ############### 15
ask 100.20 | ######### 9
ask 100.10 | ###### 6
----- spread 0.20 -----
bid 99.90 | ##### 5
bid 99.80 | ######## 8
bid 99.70 | ############ 12
bid 99.50 | #################### 20في المخرج أعلاه لاحظ التالي:
- الدفتر جزءان: عروض البيع Asks في الأعلى، وهي من يبيع وبأي سعر، وعروض الشراء Bids في الأسفل، وهي من يشتري وبأي سعر. وكل سطر سعر وكمية، لا سعر واحد.
- أفضل عرض بيع 100.10، وأفضل عرض شراء 99.90، والفرق بينهما 0.20 يسمى الفارق Spread، وهو 20 نقطة أساس، أي 0.2% من السعر. والنقطة الأساسية Basis Point جزء من عشرة آلاف، وهي وحدة شائعة في المالية شرحناها في مقالات التمويل.
- منتصف السوق Mid هو متوسط أفضل بيع وأفضل شراء، أي 100، وهذا هو الرقم الذي تعرضه المنصة كثمن، ولكن لا أحد يستطيع أن يشتري أو يبيع عنده فوراً، لأن لا يوجد عرض عنده.
- العمق Depth هو الكمية المتاحة عند كل سعر، وتراه في طول الأعمدة: كمية قليلة عند الأسعار القريبة، وأكثر عند الأسعار البعيدة. وهذا العمق هو ما يحدد كم يستطيع أمر كبير أن ينفذ بسعر جيد.
ولماذا يوجد فارق Spread أصلاً، أليس من الأبسط أن يلتقي البيع والشراء عند سعر واحد؟ والإجابة أن البائع يريد أعلى سعر والمشتري يريد أدنى سعر، فبينهما فجوة طبيعية لا يعبرها أحد إلا إذا قبل أن يدفع أكثر أو يأخذ أقل. ومن يملأ هذه الفجوة ويجعل التداول ممكناً في كل لحظة هو صانع السوق الذي سوف نشرحه، فهو يعرض أن يبيع بسعر وأن يشتري بسعر أقل منه، فيربح الفرق مقابل أنه متاح دائماً للطرفين. فالفارق إذن ليس عيباً في السوق، وإنما ثمن وجود من يتداول معك فوراً متى شئت، وكلما زاد عدد من يفعلون ذلك ضاق الفارق.
والصورة التالية ترسم الدفتر بنفس الأرقام:

محرك المطابقة: السعر أولاً ثم الوقت
عندما يصل أمر جديد، يطابقه محرك المطابقة Matching Engine بالجانب الآخر من الدفتر بقاعدة ثابتة اسمها أولوية السعر ثم الوقت Price-Time Priority: يبدأ بأفضل سعر للطرف الآخر، أي أرخص عرض بيع للمشتري، وعند تساوي السعر يقدم الأمر الأقدم زمناً. فلا تفضيل لأحد إلا بسعر أفضل أو وقت أسبق، وهذه القاعدة هي التي تجعل السوق عادلاً بين من يضعون أوامرهم. والسكربت 02-match.py يضع نفس الدفتر، ثم يرسل أمر شراء محدداً Limit بكمية 10 وسعر أقصى 100.25:
print("== a taker LIMIT buy that crosses: buy 10 at 100.25")
b = OrderBook(); seed(b)
left = b.limit("buy", 100.25, 10, "taker")
print(" fills:", [(f"{p:.2f}", q) for p, q, who, s in b.trades])
print(f" filled {10-left:.0f} of 10, {left:.0f} rests on the book at 100.25")
print(f" best ask now {b.best_ask():.2f}")والجزء الأول من المخرج سوف يكون كما يلي:
== a taker LIMIT buy that crosses: buy 10 at 100.25 (willing to pay up to 100.25)
fills: [('100.10', 6), ('100.20', 4)]
filled 10 of 10, 0 rests on the book at 100.25
best ask now 100.20في المخرج أعلاه لاحظ التالي:
- الأمر نفذ على جزأين: 6 عند 100.10، وهو العرض الأول الأرخص فاستنفده كله، ثم 4 عند 100.20 من العرض الثاني. فالمحرك بدأ بأرخص بيع كما تقول القاعدة، لا بالسعر الذي عرضه المشتري.
- السعر الأقصى 100.25 الذي قبله المشتري لم يستعمل، لأن السوق قدم سعراً أفضل، فالأمر المحدد يقول «لا تدفع أكثر من هذا»، ولا يعني «ادفع هذا».
- بعد الأمر تحرك أفضل عرض بيع من 100.10 إلى 100.20، لأن المشتري استهلك العرض الأول وجزءاً من الثاني، أي أن الشراء رفع السعر قليلاً، وهذا الأثر الطبيعي لأي أمر.
والصورة التالية تبين المطابقة خطوة خطوة:

ولاحظ المصطلحين في الصورة: من يضع أمراً على الدفتر وينتظر أن يأتي من يطابقه يسمى صانع Maker لأنه يصنع السيولة، ومن يأخذ من الدفتر فوراً يسمى متذوق Taker لأنه يسحب السيولة. وهذا التمييز ليس شكلياً، فعليه تبنى الرسوم كما سوف نرى.
وقد يتساءل البعض: لماذا يضع أحد أمراً محدداً وينتظر، بدل أن يشتري فوراً بأمر سوقي؟ والإجابة أن لكل خياره: من يريد سعراً أفضل ويقدر على الانتظار يضع أمراً محدداً، فإما أن ينفذ بسعره أو أحسن، وإما أن يبقى معلقاً. ومن يريد اليقين بأنه اشترى ولا يبالي بفرق صغير يرسل أمراً سوقياً. والفرق في جوهره مفاضلة بين السعر والزمن: الأمر المحدد يعطيك سعراً أفضل مقابل احتمال التأخر أو عدم التنفيذ، والأمر السوقي يعطيك التنفيذ الفوري مقابل سعر قد يكون أسوأ. وهذه نفس المفاضلة التي رأيناها في كل مكان في هذا المسار: لا شيء مجاني، وكل ضمان له ثمن.
ولاحظ أيضاً معنى التنفيذ الجزئي Partial Fill: الأمر لا ينفذ دائماً دفعة واحدة، فقد ينفذ جزء منه ويبقى الباقي. ففي تجربتنا لو كان الأمر المحدد كمية 20 بسعر 100.15، لنفذ منه 6 عند 100.10 فقط، لأن بقية العروض أغلى من 100.15، ولبقي 14 معلقاً على الدفتر عند 100.15 ينتظر من يبيع عنده. وهذا مهم للعميل: الأمر المعلق ليس فشلاً، وإنما انتظار، وتستطيع أن تلغيه إذا غيرت رأيك ما دام لم ينفذ. ومن هنا تأتي ثلاث حالات لكل أمر يجب أن يفهمها نظام المنصة الذي يتابع الأوامر: نفذ كاملاً، أو نفذ جزئياً وبقي الباقي معلقاً، أو لم ينفذ وبقي كله معلقاً، أو ألغي.
وهناك خيارات إضافية على الأمر تسمى مدة السريان Time in Force، تحدد كم يبقى الأمر حياً: منها «حتى الإلغاء» الذي يبقى معلقاً إلى أن تلغيه أو ينفذ، ومنها «نفذ أو ألغ فوراً» الذي ينفذ ما يستطيع فوراً ويلغي الباقي بدل أن يبقى معلقاً، ومنها «الكل أو لا شيء» الذي لا ينفذ إلا إذا أمكن تنفيذه كاملاً في الحال. وهذه الخيارات تعطي المتداول تحكماً أدق، فمن يريد ألا يترك أثراً على الدفتر يستخدم «نفذ أو ألغ»، ومن يريد سعراً معيناً ولا يهمه الانتظار يستخدم «حتى الإلغاء». ولا يحتاج أغلب المستخدمين هذه التفاصيل، ولكن نظام المنصة الذي يحول مبالغ كبيرة قد يستفيد منها ليتحكم في كيف ينفذ أمره دون أن يحرك السوق ضده.
ماذا لو كان الأمر أكبر من الدفتر كله؟
جربنا حالتين تكشفان شيئاً عن عمل المحرك، في السكربت 04-whatif.py. الأولى أمر سوقي أكبر من كل العروض المتاحة، والثانية مستخدم يحاول أن يتداول مع نفسه، والمخرج كما يلي:
== what if a huge market buy is bigger than the whole book?
wanted 100, the book held 30, filled 30, 70 could not be filled
best ask now: None (the book is empty on the ask side)
== why an exchange needs self-trade prevention
user places a sell at 100.00
then a buy at 100.00 -> a naive engine matches the user with itself:
trades: [('100.00', 10)]
a real exchange blocks this, else a user could fake volume (wash trading) for freeفي المخرج أعلاه لاحظ التالي:
- عندما طلب الأمر 100 والدفتر لا يحمل إلا 30، نفذ 30 فقط وبقي 70 بلا تنفيذ، وأصبح جانب البيع فارغاً. وهذا يحدث في الأسواق الرقيقة: أمر كبير يستنفد كل السيولة ولا ينفذ كله، وقد يرفع السعر بشدة في طريقه. ولهذا الأمر السوقي الكبير في سوق ضحل خطر حقيقي على من يرسله.
- عندما وضع المستخدم نفسه عرض بيع ثم عرض شراء بنفس السعر، طابقه المحرك البسيط مع نفسه، فظهرت صفقة لا معنى لها. والمنصة الحقيقية تمنع هذا بما يسمى منع التداول الذاتي Self-Trade Prevention، لأن من دونه يستطيع أي شخص أن يصنع حجم تداول وهمياً بلا تكلفة، وهذا هو التداول الصوري الذي سوف نذكره في المخاطر. فالمحرك ليس مجرد مطابقة، وإنما مطابقة بقواعد عدل تمنع الغش.
أنواع الأوامر والانزلاق Slippage
الأمر المحدد Limit Order الذي رأيناه يحدد أقصى سعر تقبله في الشراء أو أدناه في البيع، فيحميك من السعر السيئ، ولكنه قد لا ينفذ كله إذا لم يصل السوق إلى سعرك، وقد يبقى معلقاً على الدفتر. والنوع الآخر هو الأمر السوقي Market Order، وهو ينفذ فوراً بأي سعر متاح، يأخذ من الدفتر صعوداً حتى يكتمل، فالأكيد فيه التنفيذ لا السعر. والفرق بين السعر الذي توقعته والسعر الذي نفذ به فعلاً يسمى الانزلاق Slippage، وهو يكبر مع حجم الأمر، لأن الأمر الكبير يأكل عدة مستويات من الدفتر. والسكربت نفسه يجرب أمرين سوقيين بحجمين:
print("== a MARKET buy of 20: how slippage grows with size")
b = OrderBook(); seed(b)
b.limit("buy", 1e9, 20, "taker") # a very high limit = take whatever price
cost = sum(p*q for p,q,who,s in b.trades)
qty = sum(q for p,q,who,s in b.trades)
print(f" bought {qty:.0f} for {cost:.2f}, average price {cost/qty:.3f}")
print(f" slippage vs 100.10 = {(cost/qty-100.10)/100.10*1e4:.0f} bps")والجزء الخاص بالأمرين السوقيين من المخرج سوف يكون كما يلي:
== a MARKET buy of 20 (take whatever price): how slippage grows with size
fills: [('100.10', 6), ('100.20', 9), ('100.30', 5)]
bought 20 for total 2003.90, average price 100.195
best ask was 100.10, so slippage = 0.095 per unit (9 bps)
== a bigger MARKET buy of 55 eats deep into the book
bought 55 for total 5519.40, average price 100.353
slippage 25 bps (vs 15 bps for size 20)في المخرج أعلاه لاحظ التالي:
- الأمر السوقي بحجم 20 نفذ على ثلاثة مستويات: 6 عند 100.10، و9 عند 100.20، و5 عند 100.30، فمتوسط سعره 100.195، أي أعلى من أفضل سعر كان 100.10 بتسع نقاط أساس. فأنت اشتريت بالتأكيد، ولكن بسعر متوسط أسوأ من أفضل سعر رأيته.
- الأمر الأكبر بحجم 55 أكل الدفتر أعمق، فمتوسط سعره 100.353، وانزلاقه 25 نقطة أساس، أي قرابة ثلاثة أضعاف انزلاق الأمر الأصغر. وهذا هو جوهر الانزلاق: كلما كبر الأمر قل العمق المتاح بسعر جيد، وزاد الفرق. ولاحظ أن النسبة لا تكبر خطياً، فمضاعفة الحجم قد تضاعف الانزلاق أو أكثر، لأن الأمر يصل إلى مستويات أبعد وأغلى، ولهذا يقسم المتداولون الأمر الكبير على دفعات بمرور الوقت بدل تنفيذه دفعة واحدة.
- الدرس للعميل: المبلغ الصغير في سوق عميق يكاد لا ينزلق، أما الأمر الكبير في سوق ضحل فقد ينفذ بسعر أسوأ بكثير مما يرى، والأمر المحدد يحميه من ذلك مقابل احتمال ألا ينفذ كله.
وقد يخلط البعض بين السعر الذي يراه على الرسم البياني Price Chart والسعر الذي سينفذ به. الرسم البياني يعرض آخر سعر تمت به صفقة، وهو تاريخ، أما ما سينفذ به أمرك فيعتمد على الدفتر الآن وعلى حجم أمرك. فالرسم يقول «بكم تداول الناس آخر مرة»، والدفتر يقول «بكم تستطيع أنت أن تتداول الآن»، وهما ليسا نفس الشيء، والفرق بينهما هو بالضبط الفارق والانزلاق والرسوم. ولهذا من يبني قراره على الرقم الكبير في الرسم وحده يفاجأ عند التنفيذ، ومن ينظر إلى الدفتر يعرف ما سيدفعه فعلاً. وهذه نقطة يجب أن يشرحها نظام المنصة للعميل بوضوح، فلا يعد بسعر لا يستطيع أن يفي به.
والصورة التالية تجمع نوعي الأمر وأرقام الانزلاق:

الرسوم: نموذج صانع ومتذوق
المنصة لا تربح من فرق السعر غالباً، وإنما من رسوم كل صفقة، وأشهر نموذج هو صانع ومتذوق Maker-Taker: من يضع أمراً يبقى على الدفتر ويضيف سيولة يدفع رسوماً أقل أو يكافأ، ومن يأخذ من الدفتر فوراً ويسحب السيولة يدفع أكثر، لتشجيع الناس على ملء الدفتر. والسكربت 03-fees.py يحسب ذلك بنسب توضيحية لا تخص أي منصة: صانع 0.10% ومتذوق 0.20%:
traded notional: 1001.40
taker pays 0.20% = 2.0028
makers pay 0.10% = 1.0014 (lower, to reward providing liquidity)
exchange revenue on this trade: 3.0042
why the spread matters: a taker who buys at 100.20 and sells back at 99.90
loses the spread 0.30 plus two taker fees 0.40% before any price moveفي المخرج أعلاه لاحظ التالي:
- على صفقة قيمتها 1001.40 دفع المتذوق 0.20% أي قرابة 2، ودفع الصانع 0.10% أي قرابة 1، فبلغت رسوم المنصة على الصفقة قرابة 3. وهذا على كل صفقة، فحجم تداول كبير يعني دخلاً كبيراً للمنصة.
- السطر الأخير مهم لكل متداول: لو اشترى أحد ثم باع فوراً دون أي حركة في السعر، لخسر الفارق Spread، وهو هنا 0.30، زائد رسوم المتذوق مرتين 0.40%. أي أن مجرد الدخول والخروج يكلف قبل أي ربح أو خسارة من السعر، وهذا ما ينساه كثير من المبتدئين الذين يتداولون كثيراً.
وهناك رسوم أخرى يجب أن يعرفها العميل: رسوم الإيداع والسحب، خاصة سحب العملة إلى محفظة خارجية الذي يتحمل رسوم غاز الشبكة، والفرق بين سعر الشراء وسعر البيع الذي تعرضه المنصة للمستخدم المبتدئ في واجهة التحويل السريع، وهو غالباً أوسع بكثير من الفارق في دفتر الأوامر، لأنه يخفي فيه ربح المنصة. والقاعدة: اقرأ كل الرسوم قبل أي تعامل، فالتكلفة الحقيقية مجموع الفارق والانزلاق والرسوم، لا الرقم المعروض وحده.
ولتوضيح الفرق بين واجهة التحويل السريع ودفتر الأوامر، تخيل منصة تعرض للمبتدئ زراً واحداً «اشتر» بسعر معلن، وتعرض للمتداول المحترف دفتر الأوامر كاملاً. المبتدئ الذي يضغط الزر يدفع سعراً يضم فيه المنصة ربحاً صامتاً قد يكون 1% أو 2% فوق سعر السوق الحقيقي، بينما المتداول الذي يضع أمراً محدداً في الدفتر يدفع الفارق الحقيقي الضيق مع رسوم معلنة. فالواجهة البسيطة أسهل ولكنها أغلى، والواجهة المتقدمة أعقد ولكنها أرخص. وهذا نمط يتكرر في كل المالية: الراحة لها ثمن، والثمن غالباً مخفي في السعر لا في رسم معلن، ولذلك الفريق الذي يحسب تكلفة التعامل بعملة رقمية يجب أن يقارن السعر الفعلي المنفذ بسعر السوق في نفس اللحظة، لا أن يصدق الرقم المعروض في زر الشراء.
ونقطة أخيرة في الرسوم: أغلب المنصات تخفض الرسوم كلما زاد حجم تداولك الشهري، بدرجات Tiers، فالمتداول الكبير يدفع أقل بكثير من الصغير. وهذا منطقي من جهة المنصة لأنها تريد الأحجام الكبيرة، ولكنه يعني أن الرسوم التي تراها كمبتدئ أعلى من التي يتحدث عنها المحترفون. فلا تقارن رسمك برسم غيرك دون أن تعرف درجته، واحسب رسمك أنت عند حجمك أنت.
السيولة ومن يصنعها
كل ما سبق يفترض أن الدفتر مليء بالعروض على الجانبين، فمن يملؤه؟ هذا دور صانع السوق Market Maker: طرف يضع باستمرار أوامر بيع وشراء على الجانبين، فيوفر للناس من يبيعون له ومن يشترون منه في أي لحظة، ويربح الفارق Spread بين سعري البيع والشراء. فإذا باع عند 100.10 واشترى عند 99.90 ربح 0.20 على كل دورة، مقابل أنه يتحمل خطر أن يتحرك السعر ضده بينما يحمل العملة. وهذا هو سبب وجود الفارق أصلاً: ليس رسماً تأخذه المنصة مباشرة، وإنما مكافأة صانع السوق على تحمله الخطر وتوفيره السيولة. وكلما زاد عدد صانعي السوق والمنافسة بينهم، ضاق الفارق وزاد العمق، فصار السوق أرخص وأسهل للجميع.
ومن هنا يأتي معيار مهم للعميل: السوق العميق ذو الفارق الضيق أرخص وأكثر أماناً من السوق الضحل ذي الفارق الواسع، لأن أوامرك تنفذ بأسعار أقرب لما ترى، وانزلاقك أقل. والزوج المشهور الكثير التداول يكون عادة عميقاً، أما الزوج النادر فقد يكون دفتره شبه فارغ، فينفذ أمرك الصغير بسعر بعيد جداً. ولذلك لا تنظر إلى السعر المعروض وحده، وإنما إلى الفارق والعمق، فهما يقولان لك التكلفة الحقيقية. والمنصات نفسها تتنافس على جذب صانعي السوق بالرسوم المنخفضة للصانعين، لأن المنصة التي فيها سيولة أكثر تجذب متداولين أكثر، فتصبح أكثر سيولة، وهذه حلقة تجعل السيولة تتجمع في منصات قليلة.
وهذه الحلقة تفسر ظاهرة مهمة للفريق: قيمة منصة التداول في سيولتها قبل أي شيء آخر، فالمنصة الجديدة مهما كانت واجهتها جميلة لا تنفع إن كان دفترها فارغاً، لأن أوامرك لن تجد من يطابقها بسعر جيد. ولهذا تقضي المنصات الجديدة جهداً كبيراً في جلب صانعي سوق أولاً، أحياناً بدفع مقابل لهم، لتبدأ الحلقة. والدرس للفريق الذي يختار منصة للتعامل: اختر منصة معروفة السيولة في الزوج الذي تحتاجه، لا منصة جديدة مهما بدت جذابة، لأن السيولة هي التي تحدد كم ستخسر في كل تحويل.
ماذا يحدث داخل المنصة المركزية؟
الآن السؤال الأهم: عندما ينفذ أمرك على منصة مركزية، هل تحركت عملة على البلوكتشين؟ الإجابة في أغلب الأحيان لا. فالمنصة المركزية Centralized Exchange واختصاراً CEX تعمل كما يلي:
- الحساب والإيداع: تسجل وتجتاز التحقق من الهوية KYC الذي شرحناه في مقال معرفة العميل، وتودع مالاً، فيصبح رصيداً في قاعدة بيانات المنصة، لا في محفظة تملك مفاتيحها.
- المطابقة خارج السلسلة: محرك المطابقة يعمل خارج البلوكتشين Off-chain، في قاعدة بيانات المنصة، فيطابق ملايين الأوامر في الثانية بسرعة لا تستطيعها السلسلة، التي تنتج كتلة كل اثنتي عشرة ثانية كما رأينا.
- الدفتر الداخلي: عند التنفيذ تعدل المنصة سطرين في قاعدة بياناتها: ينقص رصيدك النقدي ويزيد رصيدك من العملة، تماماً كما يفعل البنك عند التحويل، كما شرحنا في مقال البلوكتشين للمبتدئين. ولا تتحرك أي معاملة على السلسلة في هذه اللحظة.
- الحفظ: المنصة تملك المفاتيح الخاصة لكل العملات، وتجمع أموال العملاء في محافظ، بعضها باردة Cold غير متصلة وبعضها ساخنة Hot للسحوبات اليومية. فرصيدك على المنصة وعد منها بأنها تملك مقابله، لا عملة تملكها أنت.
- السحب على السلسلة: فقط عندما تسحب العملة إلى محفظتك الخاصة ترسل المنصة معاملة حقيقية على السلسلة، وعندها فقط تصبح العملة لك وتملك مفتاحها.
ومن هذا التصميم نفهم فرقاً مهماً بين نوعين من الحركة: الحركة داخل المنصة Internal، وهي كل تداول وتحويل بين حسابات على نفس المنصة، ولا تلمس السلسلة إطلاقاً، فهي فورية ومجانية تقريباً لأنها مجرد تعديل في قاعدة البيانات. والحركة على السلسلة On-chain، وهي الإيداع من خارج المنصة والسحب إلى خارجها، وهذه معاملات حقيقية برسوم غاز وتنتظر تأكيد الكتل. ولهذا يبدو التداول على المنصة سريعاً ورخيصاً جداً بينما السحب أبطأ وأغلى، والسبب أن الأول لا يلمس الشبكة والثاني يلمسها. وهذا يفسر أيضاً لماذا تطلب المنصات عدة تأكيدات قبل أن تعتبر إيداعك وصل: لأنها تنتظر أن تستقر المعاملة على السلسلة كما شرحنا التأكيدات في مقال الإجماع، حتى لا يسحب أحد إيداعاً لم يستقر بعد.
والصورة التالية تجمع هذه الخطوات:

وهذه الحقيقة هي مفتاح فهم المخاطر: ما دامت عملتك على المنصة، فأنت لا تملكها بالمعنى الذي شرحناه في مقال العقود، وإنما تملك وعداً من المنصة، وتثق بها كما تثق بالبنك. والفرق أن البنوك تخضع لرقابة ونظام تأمين ودائع في كثير من البلدان، أما منصة قد تكون في بلد بلا رقابة فلا شيء يضمن أنها تملك فعلاً مقابل ما تعرضه في حسابك. وهذا بالضبط ما نفصله في مقال الحفظ لدى المنصة أم بنفسك.
ولماذا تعمل المنصة خارج السلسلة أصلاً، أليس من الأصدق أن تنفذ كل صفقة على البلوكتشين؟ والإجابة أن السلسلة بطيئة ومكلفة مقارنة بما يحتاجه التداول: كتلة كل اثنتي عشرة ثانية لا تكفي سوقاً فيه ملايين الأوامر في الثانية، ورسوم غاز على كل صفقة تجعل التداول السريع مستحيلاً. فالمنصة تطابق خارج السلسلة لتعطي سرعة ورخصاً لا تقدمهما السلسلة، وهذا هو السبب التقني الحقيقي للمركزية، لا مجرد رغبة في التحكم. والثمن أنك تتخلى عن التحقق بنفسك: لا ترى ما يحدث داخل قاعدة بيانات المنصة، ولا تتأكد أنها تملك فعلاً ما تعرضه في حسابك، وإنما تثق.
وبعد انهيار FTX الذي سوف نرويه، انتشرت فكرة إثبات الاحتياطي Proof of Reserves: أن تنشر المنصة ما يثبت أنها تملك على السلسلة مقابل ودائع عملائها. وهي خطوة في الاتجاه الصحيح، ولكنها ناقصة، لأنها تثبت ما تملكه المنصة في لحظة، ولا تثبت ما تدين به، فقد تملك المنصة أصولاً وتدين بأكثر منها، أو تستعير أصولاً لحظة النشر ثم تعيدها. ولذلك إثبات الاحتياطي الكامل يحتاج إثبات الأصول والخصوم معاً ومراجعة مستقلة، وهو ما لا تقدمه كل المنصات. والقاعدة التي خرج بها الفريق: وعد المنصة لا يصبح حقيقة لأنها نشرت رقماً، والطريقة الوحيدة لتملك عملتك فعلاً أن تسحبها إلى محفظة تملك مفاتيحها.
المنصة المركزية والمنصة اللامركزية
في مقابل المنصة المركزية، ظهرت المنصة اللامركزية Decentralized Exchange واختصاراً DEX، وهي تعمل بعقود ذكية على السلسلة بدل محرك مركزي، كما تشرح صفحة التمويل اللامركزي في ethereum.org. وفيها لا تودع أموالك عند أحد، وإنما تتداول من محفظتك مباشرة، فالعقد يأخذ عملة ويعطي أخرى في نفس المعاملة. وأشهر نماذجها صانع السوق الآلي Automated Market Maker، وهو مجمع سيولة بقاعدة حاصل ضرب ثابت رأيناها في مقال أمن العقود عندما شرحنا التلاعب بالأوراكل. والصورة التالية تقارن النموذجين:

والفروق الأساسية: في المركزية تتم المطابقة خارج السلسلة بسرعة ورخص، وتحفظ المنصة مفاتيحك، وتطلب هوية، ويمكنها تجميد حساب. وفي اللامركزية تتم كل صفقة على السلسلة كمعاملة برسوم غاز، وتحتفظ أنت بمفاتيحك، والعقد لا يسأل عن هويتك، ولكن النظام القانوني في بلدك قد يطلبها على أي حال. وأكبر خطر في المركزية أن تفلس المنصة أو تسرق، وفي اللامركزية خطأ في العقد الذكي أو خسارة مزودي السيولة. ولا يوجد خيار أفضل مطلقاً، وإنما مفاضلة بين السهولة والثقة من جهة، والتحكم والتعقيد من جهة أخرى.
وأي نموذج يناسب منصة قصتنا؟ للتحويل البسيط السريع لمبالغ العمليات، المنصة المركزية المرخصة أسهل وأرخص وأسرع، شرط ألا تترك عليها أموالاً أكثر من اللازم. أما إذا أرادت المنصة أن تحتفظ بالتحكم الكامل في مفاتيحها ولا تثق بأي وسيط، فالطريق اللامركزي يعطيها ذلك مقابل تعقيد أكبر ورسوم غاز على كل صفقة وحاجة لفهم العقود والمجمعات. وأغلب الفرق في بداية طريقها تختار المركزية المرخصة للبساطة، وتترك اللامركزية لمن يحتاج التحكم الكامل ويقدر على تعقيده. والمهم أن يكون الاختيار واعياً: أن تعرف بالضبط بماذا تثق ولماذا، لا أن تنجرف إلى خيار لأنه الأشهر أو الأسهل دون أن تعرف ما تتخلى عنه.
وكيف يحدد السعر في صانع السوق الآلي AMM إذا لم يكن هناك دفتر أوامر ولا صانع سوق بشري؟ الفكرة أن مجمعاً يحمل كمية من عملتين، مثلاً 1000 من عملة و1000 وحدة نقدية، وقاعدته أن حاصل ضربهما ثابت، فإذا اشترى أحد عملة من المجمع نقص عدد العملات وزاد النقد، فارتفع سعر العملة تلقائياً بحسب القاعدة، دون أن يضع أحد سعراً. وكلما اشترى المرء أكثر ارتفع السعر أسرع، وهذا هو انزلاق المجمع، يشبه في أثره انزلاق دفتر الأوامر وإن اختلفت آليته. ومن يضع عملتيه في المجمع ليوفر السيولة يسمى مزود سيولة Liquidity Provider ويربح جزءاً من رسوم كل صفقة، ولكنه يتحمل ما يسمى الخسارة غير الدائمة Impermanent Loss: إذا تحرك سعر العملتين كثيراً، يصبح ما يستطيع سحبه من المجمع أقل مما لو احتفظ بالعملتين في محفظته دون أن يضعهما، والسبب أن المجمع يبيع العملة التي يرتفع سعرها ويشتري التي ينخفض تلقائياً. وهذه آلية دقيقة لها مقال مستقل في مرحلة التطبيقات المتقدمة، ويكفي هنا أن تعرف أن اللامركزية لا تلغي الخطر، وإنما تنقله من الثقة بالمنصة إلى فهم العقد والسوق.
المخاطر: الحفظ والتلاعب
أخطر ما في المنصات المركزية ليس تقنياً في المطابقة، وإنما في الحفظ: إذا أساءت المنصة استخدام أموال العملاء التي تحفظها، أو سرقت، خسر العملاء أموالهم، لأنهم لا يملكون المفاتيح.
وهناك مخاطر أخرى على مستوى السوق نفسه يجب أن يعرفها الفريق: التلاعب بالأسعار، مثل أوامر وهمية كبيرة توضع ثم تسحب لتحريك السوق، والتداول الصوري Wash Trading، وهو أن يتداول طرف مع نفسه ليضخم حجم التداول المعروض فيبدو الزوج نشطاً أكثر مما هو. وهذه الممارسات محظورة في الأسواق المنظمة، وتحذر منها هيئات مثل لجنة CFTC الأمريكية في تنبيهاتها للمستهلكين، ولكن منصة غير منظمة قد لا تمنعها. والقاعدة: حجم التداول المعلن لا يثبت أن السوق حقيقي، وعمق الدفتر الذي رأيناه أصدق دليل على السيولة الفعلية.
وهناك خطر ثالث خاص بمنصة قصتنا تحديداً، وهو خطر الطرف المقابل Counterparty Risk على مستوى المنصة ككل. فإذا احتفظت المنصة بأموال المنصة الناشئة على حسابها، فإن أي مشكلة في المنصة، من إفلاس إلى تجميد إلى اختراق، تصيب أموال المنصة الناشئة مباشرة، تماماً كما أصابت أموال عملاء FTX. ولذلك القاعدة التشغيلية التي يجب أن يبنيها الفريق: لا تترك على أي منصة أكثر مما تحتاج للعمليات الجارية، واسحب الفائض إلى حفظ تتحكم فيه، وهو ما نفصله في مقال الحفظ. فالمنصة أداة للتحويل والتداول، لا مكان لحفظ أموال طويل الأمد.
وفوق كل ذلك المخاطر النظامية، فالتعامل مع العملات الرقمية وتداولها يخضع لأنظمة تختلف من بلد لبلد، وبعض المنصات غير مرخصة أصلاً في البلد الذي يستخدمها فيه عملاؤها، فتعرضهم لمخاطر قانونية فوق المخاطر المالية. وموقف الجهات الرسمية في المملكة من التعامل مع العملات الرقمية موضوع مقال مستقل في هذه المرحلة، ولا يقول هذا المقال التقني إن التداول مسموح أو ممنوع، وإنما يشرح كيف تعمل المنصات تقنياً حتى يفهم القارئ ما يتعامل معه قبل أي قرار يرجع فيه إلى المصادر الرسمية.
كيف تحول المنصة الناشئة دفعة بعملة رقمية؟
نعود إلى قرار الفريق الذي بدأنا به: قبول الدفع بعملة رقمية وتحويله فوراً إلى عملة محلية. وبعد كل ما رأيناه، صار القرار سلسلة خطوات مفهومة، وكل خطوة تطبق مفهوماً من المقال:
- استقبال العملة: العميل يرسل العملة إلى محفظة تملك المنصة الناشئة مفاتيحها، لا إلى حساب على منصة تداول مباشرة. فهكذا تملك المنصة الناشئة العملة فعلاً قبل أن تثق بأي طرف، وتنتظر عدة تأكيدات على السلسلة قبل أن تعتبر الدفعة وصلت.
- التحويل: ترسل العملة إلى منصة تداول مرخصة، وتبيعها بأمر محدد Limit لا سوقي إذا كان المبلغ كبيراً، حتى لا تخسر في الانزلاق، أو تقسم الأمر الكبير على عدة أوامر أصغر إذا كان الدفتر رقيقاً. وتختار الزوج الأعمق والأضيق فارقاً إن توفرت عدة خيارات.
- السحب: تسحب العملة المحلية بأسرع ما يمكن إلى حساب بنكي، فلا تترك على المنصة إلا ما يلزم للعمليات الجارية، لأن كل ما تتركه معرض لخطر الطرف المقابل.
- المحاسبة: تسجل في نظامها السعر الفعلي المنفذ، لا السعر المعروض، وتحسب التكلفة الكاملة: الفارق والانزلاق ورسوم التداول ورسوم السحب، فتعرف التكلفة الحقيقية لقبول الدفع بعملة رقمية، وتقررها على هذا الأساس.
ولاحظ أن كل خطوة هنا قرار له ثمن ومخاطرة، لا زر تضغطه. والفريق الذي يفهم دفتر الأوامر والانزلاق والحفظ يتخذ هذه القرارات بوعي، والفريق الذي لا يفهمها يفاجأ بأن ما استلمه بعملة رقمية وصله بعملة محلية أقل مما توقع، أو أن أمواله علقت في منصة متعثرة. وكل هذا قبل السؤال النظامي الأهم: هل هذا النشاط مسموح أصلاً في بلده، وهو سؤال يرجع فيه إلى الجهات الرسمية قبل أي تنفيذ تقني.
قائمة تحقق قبل التعامل مع منصة تداول
| البند | السؤال | ما تبحث عنه |
|---|---|---|
| الترخيص النظامي | هل المنصة مرخصة في بلدك أو بلد المنصة؟ | وضعها النظامي من مصادره الرسمية قبل أي شيء |
| الحفظ | من يملك مفاتيح عملتك؟ | ما دامت على المنصة فهي تحفظها، فلا تترك أكثر مما تحتاج |
| نوع الأمر | سوقي أم محدد؟ | محدد للحماية من الانزلاق، سوقي للتنفيذ المؤكد |
| التكلفة الحقيقية | كم الفارق والانزلاق والرسوم معاً؟ | اجمعها كلها، لا الرقم المعروض وحده |
| العمق | هل الدفتر عميق عند السعر؟ | العمق أصدق من حجم التداول المعلن |
| مركزية أم لامركزية | أتريد سهولة أم تحكماً في مفاتيحك؟ | مفاضلة بين الثقة بالمنصة والتحكم والتعقيد |
تدريب عملي
- عدل
01-book.pyحتى تجعل العمق عند أفضل بيع كبيراً جداً، مثل 1000، ثم شغل أمراً سوقياً بحجم 55 وقارن الانزلاق بما رأيناه، واستنتج العلاقة بين العمق والانزلاق. - أضف إلى المحرك أمر إلغاء يحذف أمراً معلقاً من الدفتر بمعرفه، ثم ضع أمراً محدداً لا ينفذ كله، وألغ ما تبقى منه، وتأكد أن الدفتر عاد كما كان.
حذف التجربة
docker image rm python:3.13-slim # إذا لم تعد تحتاجهاالخلاصة
وصلنا لنهاية الموضوع، وأهم ما فيه:
- لا يوجد سعر واحد، وإنما دفتر أوامر Order Book فيه عروض بيع وشراء بأسعار وكميات، والسعر المعروض منتصف أفضل عرضين، والفارق Spread بينهما تكلفة الدخول والخروج فوراً.
- محرك المطابقة يطابق بأولوية السعر ثم الوقت، فالشراء يبدأ بأرخص بيع، ويرفع السعر تدريجياً.
- الأمر المحدد يحميك من السعر السيئ وقد لا ينفذ كله، والأمر السوقي يضمن التنفيذ، والانزلاق يكبر مع الحجم: 9 نقاط أساس لأمر وحجمه 20، و25 لأمر حجمه 55 في تجربتنا.
- الرسوم بنموذج صانع ومتذوق، والصانع يدفع أقل، ومجرد الدخول والخروج يكلف الفارق والرسوم قبل أي حركة سعر.
- في المنصة المركزية تتم المطابقة خارج السلسلة، وتعدل المنصة سطرين في قاعدة بياناتها، وتحفظ مفاتيحك، ولا تتحرك عملة على السلسلة إلا عند السحب.
- المنصة اللامركزية تحتفظ لك بمفاتيحك ولكنها أعقد وأبطأ وأغلى لكل صفقة، وأكبر خطر في المركزية أن تفلس أو تسرق كما حدث في FTX.
وفي المقال التالي من هذه المرحلة ننزل إلى خطوات الشراء والبيع نفسها: ماذا تفعل بالضبط، وما الرسوم والمخاطر في كل خطوة.
دليلكيف تشترى العملات الرقمية وتباع؟ الخطوات والرسومنحسب بالأرقام كم تدفع فعلاً فوق السعر المعروض، ونمر على خطوات الشراء والبيع وطرقه ومخاطره وعلامات التحذير.
دليلالحفظ لدى المنصة أم بنفسك Self-custody؟ دروس انهيار FTXمن يملك المفتاح الخاص يملك المال. نولد عبارة استرداد ونرى كيف تشتق كل مفاتيحك، ونفهم لماذا سقط عملاء FTX.
دليلالعملات المستقرة Stablecoins: كيف تثبت ومتى تنهار؟ثلاث طرق لتثبيت القيمة عند دولار، نرى التصفية بأرقامها، ونحاكي دوامة الموت التي أسقطت UST.
دليلكيف يعمل Ethereum؟ الحسابات والغاز وآلة EVMماذا يحدث داخل Ethereum عندما ترسل معاملة، ولماذا تدفع الرسوم حتى لو فشلت، ولماذا تختلف تكلفة نفس الدالة من مرة لأخرى.
دليلكيف يعمل البلوكتشين Blockchain ومتى لا تحتاجهما المشكلة التي يحلها البلوكتشين أصلاً وكيف يعمل من الداخل، ومتى تكون قاعدة البيانات العادية هي الحل الأصح.
دليلمعرفة العميل KYC وفحص العقوبات بالأسماء العربيةفحصنا عشرين ألف عميل مولد مقابل قائمة مجلس الأمن، ورأينا كم مدرجاً تفوته المطابقة التامة وكم بريئاً تضيفه كل درجة في العتبة.سجل التحديثات
- أكتوبر 2026: كتابة المقال، وتشغيل محرك مطابقة تعليمي بلغة Python 3.13 على Docker Engine 29.8.0 على زوج تجريبي، ومراجعة حادثة FTX من بيان وزارة العدل الأمريكية.