[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-deep-evm-12-huff-mutaqaddim-tanfidh-takayufi-hisab-silsila":3},{"article":4,"author":59},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":7,"meta_description":16,"focus_keyword":17,"og_image":18,"canonical_url":18,"robots_meta":19,"created_at":15,"updated_at":15,"tags":20,"category_name":38,"related_articles":39},"d9000000-0000-0000-0000-000000000112","a0000000-0000-0000-0000-000000000092","Deep EVM #12: Huff متقدم — التنفيذ التكيفي والحساب على السلسلة","deep-evm-12-huff-mutaqaddim-tanfidh-takayufi-hisab-silsila","أنماط Huff متقدمة: التنفيذ التكيفي الذي يغير السلوك بناءً على حالة السلسلة، المصادقة متعددة المشغلين، وخدع تخطيط الذاكرة.","## ما وراء الأساسيات\n\nبعد إتقان الماكرو والعلامات وإدارة المكدس وجداول القفز، ننتقل إلى أنماط Huff المتقدمة المستخدمة في عقود الإنتاج. هذه الأنماط تحول Huff من تمرين أكاديمي إلى أداة تنافسية.\n\n## التنفيذ التكيفي\n\nالعقود التقليدية لها سلوك ثابت. العقود التكيفية تغير مسار تنفيذها بناءً على الحالة الحالية للسلسلة — سعر الغاز، رقم الكتلة، أو البيانات المخزنة.\n\n```huff\n#define macro ADAPTIVE_MAIN() = takes(0) returns(0) {\n    \u002F\u002F فحص سعر الغاز\n    gasprice\n    0x0BA43B7400        \u002F\u002F 50 gwei بالـ wei\n    gt\n    high_gas jumpi\n    \n    \u002F\u002F مسار الغاز المنخفض: تنفيذ كامل\n    FULL_EXECUTION()\n    stop\n    \n    high_gas:\n    \u002F\u002F مسار الغاز المرتفع: تنفيذ مخفض\n    MINIMAL_EXECUTION()\n    stop\n}\n```\n\nهذا مفيد لروبوتات MEV التي تريد تجنب الخسائر عندما يكون الغاز مرتفعاً جداً لتحقيق الربح.\n\n## المصادقة متعددة المشغلين\n\nبدلاً من مالك واحد، يمكن للعقد دعم عدة مشغلين مصرح لهم:\n\n```huff\n#define constant OPERATORS_SLOT = 0x00\n\n#define macro IS_OPERATOR() = takes(0) returns(0) {\n    \u002F\u002F حساب فتحة التعيين: keccak256(caller, OPERATORS_SLOT)\n    caller\n    0x00 mstore\n    [OPERATORS_SLOT]\n    0x20 mstore\n    0x40 0x00 keccak256  \u002F\u002F [slot]\n    sload                \u002F\u002F [isOperator]\n    authorized jumpi\n    0x00 0x00 revert\n    authorized:\n}\n\n#define macro SET_OPERATOR() = takes(0) returns(0) {\n    \u002F\u002F فقط المالك يمكنه إضافة مشغلين\n    ONLY_OWNER()\n    \n    \u002F\u002F قراءة العنوان من calldata\n    0x04 calldataload    \u002F\u002F [operator_address]\n    0x00 mstore\n    [OPERATORS_SLOT]\n    0x20 mstore\n    0x40 0x00 keccak256  \u002F\u002F [slot]\n    0x01 swap1           \u002F\u002F [slot, 1]\n    sstore               \u002F\u002F [] — operators[address] = true\n}\n```\n\n## خدع تخطيط الذاكرة\n\nفي عقود MEV، تخطيط الذاكرة الذكي يوفر غازاً كبيراً:\n\n### المنطقة المؤقتة الثابتة\n\n```huff\n\u002F\u002F تخصيص مناطق ثابتة في الذاكرة\n#define constant SCRATCH_1 = 0x00   \u002F\u002F منطقة الصفر 1\n#define constant SCRATCH_2 = 0x20   \u002F\u002F منطقة الصفر 2\n#define constant RETURN_BUF = 0x40  \u002F\u002F مخزن الإرجاع\n#define constant CALL_BUF = 0x60    \u002F\u002F مخزن الاستدعاء\n#define constant HASH_BUF = 0x80    \u002F\u002F مخزن التجزئة\n```\n\n### إعادة استخدام الذاكرة\n\nبدلاً من تخصيص ذاكرة جديدة لكل عملية، أعد استخدام نفس المنطقة:\n\n```huff\n#define macro MULTI_CALL() = takes(0) returns(0) {\n    \u002F\u002F الاستدعاء 1: استخدم 0x60..0xc4\n    \u002F\u002F ترميز transfer(address,uint256)\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\n    0x60 mstore\n    \u002F\u002F ... calldata ...\n    \n    \u002F\u002F الاستدعاء 2: أعد استخدام نفس المنطقة 0x60..0xc4\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\n    0x60 mstore\n    \u002F\u002F ... calldata جديد ...\n}\n```\n\n## حساب التجزئة على السلسلة\n\nحساب keccak256 فعال في Huff:\n\n```huff\n#define macro COMPUTE_PAIR_ADDRESS() = takes(2) returns(1) {\n    \u002F\u002F takes: [token0, token1]\n    \u002F\u002F يحسب عنوان زوج Uniswap V2\n    \n    \u002F\u002F ترتيب الرموز\n    dup2 dup2 gt\n    no_swap jumpi\n    swap1\n    no_swap:\n    \n    \u002F\u002F keccak256(abi.encodePacked(token0, token1))\n    0x00 mstore     \u002F\u002F token0 في 0x00\n    0x20 mstore     \u002F\u002F token1 في 0x20\n    0x40 0x00 keccak256  \u002F\u002F [salt]\n    \n    \u002F\u002F CREATE2 address = keccak256(0xff ++ factory ++ salt ++ initCodeHash)\n    \u002F\u002F ... حساب العنوان ...\n}\n```\n\n## أنماط تحسين الغاز المتقدمة\n\n### تخزين القيم المتعددة في فتحة واحدة\n\n```huff\n#define macro PACK_TWO_UINT128() = takes(2) returns(1) {\n    \u002F\u002F takes: [a, b] — كلاهما uint128\n    \u002F\u002F returns: [packed] — a في البتات العليا، b في البتات السفلى\n    swap1\n    0x80 shl        \u002F\u002F [a \u003C\u003C 128]\n    or              \u002F\u002F [a \u003C\u003C 128 | b]\n}\n\n#define macro UNPACK_HIGH_128() = takes(1) returns(1) {\n    \u002F\u002F takes: [packed]\n    0x80 shr        \u002F\u002F [a]\n}\n\n#define macro UNPACK_LOW_128() = takes(1) returns(1) {\n    \u002F\u002F takes: [packed]\n    0xffffffffffffffffffffffffffffffff\n    and             \u002F\u002F [b]\n}\n```\n\n### تجنب SLOAD المتكرر\n\n```huff\n#define macro CACHED_SLOAD() = takes(0) returns(0) {\n    \u002F\u002F بدلاً من قراءة نفس الفتحة مرتين:\n    [BALANCE_SLOT] sload  \u002F\u002F [balance]\n    dup1                  \u002F\u002F [balance, balance]\n    \u002F\u002F استخدم النسخة الأولى للفحص\n    \u002F\u002F استخدم النسخة الثانية للحساب\n}\n```\n\n## التكامل مع Foundry\n\nHuff يتكامل مع Foundry عبر `foundry-huff`:\n\n```solidity\n\u002F\u002F test\u002FTokenSwap.t.sol\nimport {HuffDeployer} from \"foundry-huff\u002FHuffDeployer.sol\";\n\ncontract TokenSwapTest is Test {\n    function setUp() public {\n        address swapContract = HuffDeployer.deploy(\"TokenSwap\");\n    }\n    \n    function testSwap() public {\n        \u002F\u002F اختبار كالمعتاد مع Foundry\n    }\n}\n```\n\n## الأمان في عقود Huff\n\nعقود Huff أصعب في التدقيق. إجراءات أمان إضافية مطلوبة:\n\n1. **اختبارات شاملة** — 100% تغطية مع Foundry\n2. **التحقق الرسمي** — استخدم أدوات مثل KEVM\n3. **تعليقات المكدس** — كل سطر يجب أن يوثق حالة المكدس\n4. **مراجعة الزملاء** — مراجعة ثنائية على الأقل\n\n## الملخص\n\nأنماط Huff المتقدمة — التنفيذ التكيفي، المصادقة متعددة المشغلين، وتخطيط الذاكرة الذكي — تحول الأداة من تمرين تعليمي إلى سلاح تنافسي في MEV. المفتاح هو معرفة متى تستخدم Huff ومتى تكفي Solidity.","\u003Ch2 id=\"\">ما وراء الأساسيات\u003C\u002Fh2>\n\u003Cp>بعد إتقان الماكرو والعلامات وإدارة المكدس وجداول القفز، ننتقل إلى أنماط Huff المتقدمة المستخدمة في عقود الإنتاج. هذه الأنماط تحول Huff من تمرين أكاديمي إلى أداة تنافسية.\u003C\u002Fp>\n\u003Ch2 id=\"\">التنفيذ التكيفي\u003C\u002Fh2>\n\u003Cp>العقود التقليدية لها سلوك ثابت. العقود التكيفية تغير مسار تنفيذها بناءً على الحالة الحالية للسلسلة — سعر الغاز، رقم الكتلة، أو البيانات المخزنة.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-huff\">#define macro ADAPTIVE_MAIN() = takes(0) returns(0) {\n    \u002F\u002F فحص سعر الغاز\n    gasprice\n    0x0BA43B7400        \u002F\u002F 50 gwei بالـ wei\n    gt\n    high_gas jumpi\n    \n    \u002F\u002F مسار الغاز المنخفض: تنفيذ كامل\n    FULL_EXECUTION()\n    stop\n    \n    high_gas:\n    \u002F\u002F مسار الغاز المرتفع: تنفيذ مخفض\n    MINIMAL_EXECUTION()\n    stop\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>هذا مفيد لروبوتات MEV التي تريد تجنب الخسائر عندما يكون الغاز مرتفعاً جداً لتحقيق الربح.\u003C\u002Fp>\n\u003Ch2 id=\"\">المصادقة متعددة المشغلين\u003C\u002Fh2>\n\u003Cp>بدلاً من مالك واحد، يمكن للعقد دعم عدة مشغلين مصرح لهم:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-huff\">#define constant OPERATORS_SLOT = 0x00\n\n#define macro IS_OPERATOR() = takes(0) returns(0) {\n    \u002F\u002F حساب فتحة التعيين: keccak256(caller, OPERATORS_SLOT)\n    caller\n    0x00 mstore\n    [OPERATORS_SLOT]\n    0x20 mstore\n    0x40 0x00 keccak256  \u002F\u002F [slot]\n    sload                \u002F\u002F [isOperator]\n    authorized jumpi\n    0x00 0x00 revert\n    authorized:\n}\n\n#define macro SET_OPERATOR() = takes(0) returns(0) {\n    \u002F\u002F فقط المالك يمكنه إضافة مشغلين\n    ONLY_OWNER()\n    \n    \u002F\u002F قراءة العنوان من calldata\n    0x04 calldataload    \u002F\u002F [operator_address]\n    0x00 mstore\n    [OPERATORS_SLOT]\n    0x20 mstore\n    0x40 0x00 keccak256  \u002F\u002F [slot]\n    0x01 swap1           \u002F\u002F [slot, 1]\n    sstore               \u002F\u002F [] — operators[address] = true\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"\">خدع تخطيط الذاكرة\u003C\u002Fh2>\n\u003Cp>في عقود MEV، تخطيط الذاكرة الذكي يوفر غازاً كبيراً:\u003C\u002Fp>\n\u003Ch3>المنطقة المؤقتة الثابتة\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-huff\">\u002F\u002F تخصيص مناطق ثابتة في الذاكرة\n#define constant SCRATCH_1 = 0x00   \u002F\u002F منطقة الصفر 1\n#define constant SCRATCH_2 = 0x20   \u002F\u002F منطقة الصفر 2\n#define constant RETURN_BUF = 0x40  \u002F\u002F مخزن الإرجاع\n#define constant CALL_BUF = 0x60    \u002F\u002F مخزن الاستدعاء\n#define constant HASH_BUF = 0x80    \u002F\u002F مخزن التجزئة\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>إعادة استخدام الذاكرة\u003C\u002Fh3>\n\u003Cp>بدلاً من تخصيص ذاكرة جديدة لكل عملية، أعد استخدام نفس المنطقة:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-huff\">#define macro MULTI_CALL() = takes(0) returns(0) {\n    \u002F\u002F الاستدعاء 1: استخدم 0x60..0xc4\n    \u002F\u002F ترميز transfer(address,uint256)\n    0xa9059cbb00000000000000000000000000000000000000000000000000000000\n    0x60 mstore\n    \u002F\u002F ... calldata ...\n    \n    \u002F\u002F الاستدعاء 2: أعد استخدام نفس المنطقة 0x60..0xc4\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\n    0x60 mstore\n    \u002F\u002F ... calldata جديد ...\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"\">حساب التجزئة على السلسلة\u003C\u002Fh2>\n\u003Cp>حساب keccak256 فعال في Huff:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-huff\">#define macro COMPUTE_PAIR_ADDRESS() = takes(2) returns(1) {\n    \u002F\u002F takes: [token0, token1]\n    \u002F\u002F يحسب عنوان زوج Uniswap V2\n    \n    \u002F\u002F ترتيب الرموز\n    dup2 dup2 gt\n    no_swap jumpi\n    swap1\n    no_swap:\n    \n    \u002F\u002F keccak256(abi.encodePacked(token0, token1))\n    0x00 mstore     \u002F\u002F token0 في 0x00\n    0x20 mstore     \u002F\u002F token1 في 0x20\n    0x40 0x00 keccak256  \u002F\u002F [salt]\n    \n    \u002F\u002F CREATE2 address = keccak256(0xff ++ factory ++ salt ++ initCodeHash)\n    \u002F\u002F ... حساب العنوان ...\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"\">أنماط تحسين الغاز المتقدمة\u003C\u002Fh2>\n\u003Ch3>تخزين القيم المتعددة في فتحة واحدة\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-huff\">#define macro PACK_TWO_UINT128() = takes(2) returns(1) {\n    \u002F\u002F takes: [a, b] — كلاهما uint128\n    \u002F\u002F returns: [packed] — a في البتات العليا، b في البتات السفلى\n    swap1\n    0x80 shl        \u002F\u002F [a &lt;&lt; 128]\n    or              \u002F\u002F [a &lt;&lt; 128 | b]\n}\n\n#define macro UNPACK_HIGH_128() = takes(1) returns(1) {\n    \u002F\u002F takes: [packed]\n    0x80 shr        \u002F\u002F [a]\n}\n\n#define macro UNPACK_LOW_128() = takes(1) returns(1) {\n    \u002F\u002F takes: [packed]\n    0xffffffffffffffffffffffffffffffff\n    and             \u002F\u002F [b]\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>تجنب SLOAD المتكرر\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-huff\">#define macro CACHED_SLOAD() = takes(0) returns(0) {\n    \u002F\u002F بدلاً من قراءة نفس الفتحة مرتين:\n    [BALANCE_SLOT] sload  \u002F\u002F [balance]\n    dup1                  \u002F\u002F [balance, balance]\n    \u002F\u002F استخدم النسخة الأولى للفحص\n    \u002F\u002F استخدم النسخة الثانية للحساب\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"foundry\">التكامل مع Foundry\u003C\u002Fh2>\n\u003Cp>Huff يتكامل مع Foundry عبر \u003Ccode>foundry-huff\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F test\u002FTokenSwap.t.sol\nimport {HuffDeployer} from \"foundry-huff\u002FHuffDeployer.sol\";\n\ncontract TokenSwapTest is Test {\n    function setUp() public {\n        address swapContract = HuffDeployer.deploy(\"TokenSwap\");\n    }\n    \n    function testSwap() public {\n        \u002F\u002F اختبار كالمعتاد مع Foundry\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"huff\">الأمان في عقود Huff\u003C\u002Fh2>\n\u003Cp>عقود Huff أصعب في التدقيق. إجراءات أمان إضافية مطلوبة:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>اختبارات شاملة\u003C\u002Fstrong> — 100% تغطية مع Foundry\u003C\u002Fli>\n\u003Cli>\u003Cstrong>التحقق الرسمي\u003C\u002Fstrong> — استخدم أدوات مثل KEVM\u003C\u002Fli>\n\u003Cli>\u003Cstrong>تعليقات المكدس\u003C\u002Fstrong> — كل سطر يجب أن يوثق حالة المكدس\u003C\u002Fli>\n\u003Cli>\u003Cstrong>مراجعة الزملاء\u003C\u002Fstrong> — مراجعة ثنائية على الأقل\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"\">الملخص\u003C\u002Fh2>\n\u003Cp>أنماط Huff المتقدمة — التنفيذ التكيفي، المصادقة متعددة المشغلين، وتخطيط الذاكرة الذكي — تحول الأداة من تمرين تعليمي إلى سلاح تنافسي في MEV. المفتاح هو معرفة متى تستخدم Huff ومتى تكفي Solidity.\u003C\u002Fp>\n","ar","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:32.478475Z","أنماط Huff متقدمة: التنفيذ التكيفي، المصادقة متعددة المشغلين، تخطيط الذاكرة، وتحسين الغاز للإنتاج.","Huff متقدم MEV EVM",null,"index, follow",[21,26,30,34],{"id":22,"name":23,"slug":24,"created_at":25},"c0000000-0000-0000-0000-000000000016","EVM","evm","2026-03-28T10:44:21.513630Z",{"id":27,"name":28,"slug":29,"created_at":25},"c0000000-0000-0000-0000-000000000017","Huff","huff",{"id":31,"name":32,"slug":33,"created_at":25},"c0000000-0000-0000-0000-000000000019","MEV","mev",{"id":35,"name":36,"slug":37,"created_at":25},"c0000000-0000-0000-0000-000000000013","Security","security","بلوكتشين",[40,47,53],{"id":41,"title":42,"slug":43,"excerpt":44,"locale":12,"category_name":45,"published_at":46},"d0000000-0000-0000-0000-000000000686","لماذا Bali تتحول إلى مركز تكنولوجيا التأثير في جنوب شرق آسيا 2026","limadha-bali-tatahawwal-markaz-tiknulujia-attathir-janub-sharq-asia-2026","تحتل Bali المرتبة 16 بين أنظمة الشركات الناشئة في جنوب شرق آسيا. مع تركيز متزايد لبناة Web3 وشركات AI المستدامة الناشئة وشركات تكنولوجيا السفر البيئي، تنحت الجزيرة مكانتها كعاصمة تكنولوجيا التأثير في المنطقة.","الهندسة","2026-03-28T10:44:50.120618Z",{"id":48,"title":49,"slug":50,"excerpt":51,"locale":12,"category_name":45,"published_at":52},"d0000000-0000-0000-0000-000000000685","فسيفساء حماية البيانات في ASEAN: قائمة امتثال للمطورين","fusayfisa-himayat-albayanat-asean-qaimat-imtithal-lilmutawwirin","تمتلك سبع دول في ASEAN الآن قوانين شاملة لحماية البيانات، لكل منها نماذج موافقة ومتطلبات توطين وهياكل عقوبات مختلفة. إليك قائمة امتثال عملية للمطورين الذين يبنون تطبيقات متعددة البلدان.","2026-03-28T10:44:50.114369Z",{"id":54,"title":55,"slug":56,"excerpt":57,"locale":12,"category_name":45,"published_at":58},"d0000000-0000-0000-0000-000000000684","التحول الرقمي في Indonesia بقيمة 29 مليار دولار: فرص لشركات البرمجيات","attahawwul-arraqami-indonesia-29-milyar-dular-furas-sharikat-albarmajiyat","من المتوقع أن يصل سوق خدمات تكنولوجيا المعلومات في Indonesia إلى 29.03 مليار دولار في 2026، ارتفاعاً من 24.37 مليار دولار في 2025. البنية التحتية السحابية والذكاء الاصطناعي والتجارة الإلكترونية ومراكز البيانات تقود أسرع نمو في جنوب شرق آسيا.","2026-03-28T10:44:50.092728Z",{"id":13,"name":60,"slug":61,"bio":62,"photo_url":18,"linkedin":18,"role":63,"created_at":64,"updated_at":64},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]