{"id":2572,"date":"2024-08-14T00:15:00","date_gmt":"2024-08-13T16:15:00","guid":{"rendered":"https:\/\/systw.net\/note\/?p=2572"},"modified":"2025-09-01T17:49:45","modified_gmt":"2025-09-01T09:49:45","slug":"flash-loan","status":"publish","type":"post","link":"https:\/\/systw.net\/note\/archives\/2572","title":{"rendered":"Flash Loan"},"content":{"rendered":"\n<p>\u9583\u96fb\u8cb8\u662f\u4e00\u7a2e\u5728\u53bb\u4e2d\u5fc3\u5316\u91d1\u878d\uff08DeFi\uff09\u4e2d\u7368\u6709\u7684\u3001\u7121\u64d4\u4fdd\u7684\u501f\u8cb8\u65b9\u5f0f\u3002\u5b83\u5141\u8a31\u4f7f\u7528\u8005\u5728\u4e00\u6b21\u5340\u584a\u93c8\u4ea4\u6613\u5167\uff0c\u501f\u5165\u5de8\u984d\u7684\u8cc7\u7522\uff0c\u4e26\u5728\u540c\u4e00\u7b46\u4ea4\u6613\u4e2d\u511f\u9084\u3002<\/p>\n\n\n\n<p>\u9019\u6574\u500b\u904e\u7a0b\uff0c\u5f9e\u501f\u6b3e\u5230\u9084\u6b3e\uff0c\u90fd\u5fc5\u9808\u5728\u5340\u584a\u93c8\u7684\u55ae\u4e00\u4ea4\u6613\u4e2d\u5b8c\u6210\u3002\u5982\u679c\u6c92\u6709\u5728\u4ea4\u6613\u7d50\u675f\u524d\u511f\u9084\u501f\u6b3e\uff0c\u90a3\u9ebc\u6574\u500b\u4ea4\u6613\u6703\u88ab\u81ea\u52d5\u53d6\u6d88\uff08revert\uff09\uff0c\u5c31\u50cf\u5f9e\u672a\u767c\u751f\u904e\u4e00\u6a23\u3002<\/p>\n\n\n\n<p>\u9019\u500b\u7279\u6027\u8b93\u9583\u96fb\u8cb8\u6210\u70ba\u300c\u7121\u64d4\u4fdd\u300d\u7684\u501f\u6b3e\uff0c\u56e0\u70ba\u5b83\u4e0d\u8981\u6c42\u62b5\u62bc\u54c1\u3002\u5408\u7d04\u672c\u8eab\u5c31\u662f\u4f60\u7684\u64d4\u4fdd\uff0c\u5982\u679c\u9055\u7d04\uff0c\u4ea4\u6613\u5c31\u6703\u5931\u6557\uff0c\u8cc7\u91d1\u6703\u56de\u5230\u539f\u8655\uff0c\u501f\u8cb8\u96d9\u65b9\u90fd\u4e0d\u6703\u6709\u640d\u5931\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u9583\u96fb\u8cb8\u7684\u904b\u4f5c\u539f\u7406<\/strong><\/h3>\n\n\n\n<p>\u9583\u96fb\u8cb8\u6b3e\u7684\u7279\u9ede\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u7121\u9700\u62b5\u62bc<\/strong>\uff1a\u7528\u6236\u53ef\u501f\u5165\u5de8\u984d\u8cc7\u91d1\uff08\u4f8b\u5982\uff0c\u6578\u767e\u842c\u7f8e\u5143\u7684\u4ee3\u5e63\uff09\uff0c\u53ea\u8981\u5728\u4ea4\u6613\u7d50\u675f\u524d\u511f\u9084\u3002<\/li>\n\n\n\n<li><strong>\u539f\u5b50\u6027<\/strong>\uff1a\u6240\u6709\u64cd\u4f5c\uff08\u501f\u8cb8\u3001\u64cd\u4f5c\u3001\u511f\u9084\uff09\u5728\u540c\u4e00\u4ea4\u6613\u5167\u5b8c\u6210\uff0c\u7121\u9700\u7b49\u5f85\u5340\u584a\u78ba\u8a8d\u3002<\/li>\n\n\n\n<li><strong>\u4f4e\u6210\u672c<\/strong>\uff1a\u9583\u96fb\u8cb8\u6b3e\u8cbb\u7528\u901a\u5e38\u5f88\u4f4e\uff08\u4f8b\u5982\uff0cAave \u6536\u53d6 0.09% \u7684\u8cbb\u7528\uff09\uff0c\u4f7f\u653b\u64ca\u6210\u672c\u4f4e\u5ec9\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u9583\u96fb\u8cb8\u7684\u904b\u4f5c\u6a5f\u5236\u5f88\u7cbe\u5de7\uff0c\u6211\u5011\u53ef\u4ee5\u628a\u5b83\u62c6\u89e3\u6210\u4e09\u500b\u6b65\u9a5f\uff1a<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u501f\u6b3e\uff1a<\/strong> \u667a\u80fd\u5408\u7d04\u5141\u8a31\u4f60\u5f9e\u8cc7\u7522\u6c60\uff08\u4f8b\u5982 Aave \u6216 dYdX\uff09\u501f\u5165\u4e00\u7b46\u8cc7\u91d1\u3002\u6b64\u6642\uff0c\u4f60\u53ef\u4ee5\u5728\u4f60\u7684\u4ea4\u6613\u4e2d\u8655\u7406\u9019\u7b46\u8cc7\u91d1\u3002<\/li>\n\n\n\n<li><strong>\u57f7\u884c\u64cd\u4f5c\uff1a<\/strong> \u4f60\u7684\u667a\u80fd\u5408\u7d04\u5229\u7528\u9019\u7b46\u501f\u4f86\u7684\u8cc7\u91d1\uff0c\u9032\u884c\u4e00\u9023\u4e32\u7684\u64cd\u4f5c\uff0c\u4f8b\u5982\uff1a\n<ul class=\"wp-block-list\">\n<li>\u5728\u591a\u500b\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240\uff08DEX\uff09\u4e4b\u9593\u9032\u884c\u5957\u5229\u3002<\/li>\n\n\n\n<li>\u6e05\u7b97\u50b5\u52d9\uff0c\u6216\u57f7\u884c\u62b5\u62bc\u54c1\u4ea4\u63db\u3002<\/li>\n\n\n\n<li>\u5c07\u8cc7\u7522\u5f9e\u4e00\u500b\u5354\u8b70\u8f49\u79fb\u5230\u53e6\u4e00\u500b\u5354\u8b70\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u9084\u6b3e\uff1a<\/strong> \u5728\u6240\u6709\u64cd\u4f5c\u5b8c\u6210\u5f8c\uff0c\u4f60\u7684\u5408\u7d04\u5fc5\u9808\u5c07<strong>\u501f\u6b3e\u672c\u91d1\u52a0\u4e0a\u4e00\u7b46\u5c0f\u984d\u8cbb\u7528<\/strong>\uff0c\u6b78\u9084\u5230\u8cc7\u7522\u6c60\u4e2d\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u9019\u4e09\u500b\u6b65\u9a5f\u90fd\u767c\u751f\u5728\u540c\u4e00\u7b46\u5340\u584a\u93c8\u4ea4\u6613\u4e2d\u3002\u5982\u679c\u6b65\u9a5f 3 \u7684\u9084\u6b3e\u64cd\u4f5c\u6c92\u6709\u88ab\u6210\u529f\u57f7\u884c\uff0c\u90a3\u9ebc\u5340\u584a\u93c8\u6703\u81ea\u52d5\u56de\u6eaf\uff08revert\uff09\u6574\u500b\u4ea4\u6613\uff0c\u6240\u6709\u8cc7\u7522\u90fd\u6703\u56de\u5230\u4ea4\u6613\u524d\u7684\u72c0\u614b\u3002\u9019\u78ba\u4fdd\u4e86\u501f\u8cb8\u5354\u8b70\u7684\u8cc7\u91d1\u5b89\u5168\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5f71\u97ff<\/h3>\n\n\n\n<p>\u9583\u96fb\u8cb8\u6b3e\u653b\u64ca\u53ef\u80fd\u5c0e\u81f4\u4ee5\u4e0b\u56b4\u91cd\u5f8c\u679c\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u8cc7\u91d1\u640d\u5931<\/strong>\uff1a\u653b\u64ca\u8005\u53ef\u8017\u76e1\u5354\u8b70\u7684\u5132\u5099\u8cc7\u91d1\u6216\u7aca\u53d6\u62b5\u62bc\u8cc7\u7522\uff0c\u5c0e\u81f4\u7528\u6236\u548c\u5354\u8b70\u640d\u5931\u6578\u767e\u842c\u7f8e\u5143\u3002<\/li>\n\n\n\n<li><strong>\u5e02\u5834\u64fe\u4e82<\/strong>\uff1a\u50f9\u683c\u64cd\u7e31\u6216\u6d41\u52d5\u6027\u8017\u76e1\u53ef\u80fd\u5c0e\u81f4\u5e02\u5834\u50f9\u683c\u5287\u70c8\u6ce2\u52d5\uff0c\u5f71\u97ff\u5176\u4ed6\u7528\u6236\u7684\u4ea4\u6613\u3002<\/li>\n\n\n\n<li><strong>\u751f\u614b\u7cfb\u7d71\u640d\u5bb3<\/strong>\uff1a\u653b\u64ca\u640d\u5bb3\u7528\u6236\u5c0d\u5354\u8b70\u7684\u4fe1\u4efb\uff0c\u5c0e\u81f4\u7528\u6236\u6d41\u5931\u3001\u5354\u8b70\u63a1\u7528\u7387\u4e0b\u964d\uff0c\u4ee5\u53ca\u8ca1\u52d9\u548c\u8072\u8b7d\u640d\u5931\u3002<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u9583\u96fb\u8cb8\u5957\u5229\u8a73\u89e3<\/strong><\/h3>\n\n\n\n<p>\u9583\u96fb\u8cb8\u5957\u5229\u662f\u5229\u7528\u9583\u96fb\u8cb8\u7684\u5de8\u984d\u8cc7\u91d1\uff0c\u5feb\u901f\u5730\u5728\u4e0d\u540c\u4ea4\u6613\u6240\u4e4b\u9593\u6355\u6349\u4e26\u653e\u5927\u50f9\u683c\u5dee\u7570\uff0c\u5f9e\u4e2d\u7372\u53d6\u5229\u6f64\u7684\u4e00\u7a2e\u624b\u6cd5\u3002\u6838\u5fc3\u5728\u65bc<strong>\u81ea\u52d5\u5316<\/strong>\u548c<strong>\u539f\u5b50\u5316<\/strong>\uff0c\u6574\u500b\u904e\u7a0b\u90fd\u5728\u4e00\u7b46\u5340\u584a\u93c8\u4ea4\u6613\u4e2d\u5b8c\u6210\u3002<\/p>\n\n\n\n<p>\u8b93\u6211\u5011\u7528\u4e00\u500b\u5177\u9ad4\u7684\u4f8b\u5b50\u4f86\u6a21\u64ec\u9019\u500b\u624b\u6cd5\u7684\u5b8c\u6574\u6d41\u7a0b\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u60c5\u5883\u8a2d\u5b9a<\/strong><\/h4>\n\n\n\n<p>\u5047\u8a2d\u5728\u5340\u584a\u93c8\u4e0a\u6709\u5169\u500b\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240\uff08DEX\uff09\uff0c\u90fd\u63d0\u4f9b\u4ee3\u5e63 X \u548c\u7a69\u5b9a\u5e63 USDC \u7684\u4ea4\u6613\u5c0d\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DEX A\uff1a<\/strong> \u4ee3\u5e63 X \u7684\u50f9\u683c\u662f <strong>$100 USDC<\/strong>\u3002<\/li>\n\n\n\n<li><strong>DEX B\uff1a<\/strong> \u4ee3\u5e63 X \u7684\u50f9\u683c\u662f <strong>$110 USDC<\/strong>\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u5957\u5229\u8005\u767c\u73fe\u4e86\u9019 <strong>$10 USDC<\/strong> \u7684\u50f9\u5dee\uff0c\u4e26\u6c7a\u5b9a\u5229\u7528\u9583\u96fb\u8cb8\u4f86\u9032\u884c\u5957\u5229\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u5957\u5229\u6b65\u9a5f<\/strong><\/h4>\n\n\n\n<p>\u5957\u5229\u8005\u6703\u7de8\u5beb\u4e00\u500b\u667a\u80fd\u5408\u7d04\uff0c\u5c07\u4ee5\u4e0b\u6240\u6709\u64cd\u4f5c\u6253\u5305\u5728\u540c\u4e00\u7b46\u4ea4\u6613\u4e2d\u57f7\u884c\uff1a<\/p>\n\n\n\n<p><strong>\u6b65\u9a5f 1\uff1a\u501f\u5165\u8cc7\u91d1\uff08\u9583\u96fb\u8cb8\uff09<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5957\u5229\u8005\u7684\u667a\u80fd\u5408\u7d04\u5411\u9583\u96fb\u8cb8\u5354\u8b70\uff08\u4f8b\u5982 Aave\uff09\u767c\u51fa\u8acb\u6c42\uff0c\u501f\u5165 <strong>1,000,000 USDC<\/strong>\u3002<\/li>\n\n\n\n<li>\u9019\u7b46\u8cc7\u91d1\u73fe\u5728\u53ef\u4ee5\u88ab\u5957\u5229\u8005\u7684\u5408\u7d04\u4f7f\u7528\uff0c\u4f46\u5fc5\u9808\u5728\u4ea4\u6613\u7d50\u675f\u524d\u6b78\u9084\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u6b65\u9a5f 2\uff1a\u5728\u4f4e\u50f9\u4ea4\u6613\u6240\u8cb7\u5165<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5957\u5229\u8005\u7684\u5408\u7d04\u6536\u5230 1,000,000 USDC \u5f8c\uff0c\u7acb\u5373\u5728 <strong>DEX A<\/strong> \u9032\u884c\u4ea4\u6613\u3002<\/li>\n\n\n\n<li>\u56e0\u70ba DEX A \u7684\u50f9\u683c\u662f $100\uff0c\u6240\u4ee5\u5957\u5229\u8005\u7528 <strong>1,000,000 USDC<\/strong> \u8cb7\u5165\u4e86 <strong>10,000 \u500b\u4ee3\u5e63 X<\/strong>\uff08$1,000,000 \/ $100\uff09\u3002<\/li>\n\n\n\n<li><strong>\u5c0f\u63d0\u9192\uff1a<\/strong> \u9019\u7b46\u5927\u984d\u8cb7\u5165\u6703\u8f15\u5fae\u5f71\u97ff DEX A \u7684\u6d41\u52d5\u6027\uff0c\u4f7f\u4ee3\u5e63 X \u7684\u50f9\u683c\u7a0d\u5fae\u4e0a\u6f32\uff0c\u4f46\u56e0\u70ba\u9583\u96fb\u8cb8\u91d1\u984d\u5de8\u5927\uff0c\u50f9\u5dee\u4ecd\u6709\u5229\u53ef\u5716\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u6b65\u9a5f 3\uff1a\u5728\u9ad8\u50f9\u4ea4\u6613\u6240\u8ce3\u51fa<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7dca\u63a5\u8457\uff0c\u5957\u5229\u8005\u7684\u5408\u7d04\u5c07\u525b\u525b\u5728 DEX A \u8cb7\u5230\u7684 <strong>10,000 \u500b\u4ee3\u5e63 X<\/strong>\uff0c\u62ff\u5230 <strong>DEX B<\/strong> \u9032\u884c\u8ce3\u51fa\u3002<\/li>\n\n\n\n<li>DEX B \u7684\u50f9\u683c\u662f $110\uff0c\u6240\u4ee5\u653b\u64ca\u8005\u8ce3\u51fa <strong>10,000 \u500b\u4ee3\u5e63 X<\/strong>\uff0c\u63db\u56de <strong>1,100,000 USDC<\/strong>\uff0810,000 * $110\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u6b65\u9a5f 4\uff1a\u9084\u6b3e\u8207\u7372\u5229<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5728\u4ea4\u6613\u7d50\u675f\u524d\uff0c\u5957\u5229\u8005\u7684\u5408\u7d04\u9700\u8981\u511f\u9084\u9583\u96fb\u8cb8\u7684\u672c\u91d1 <strong>1,000,000 USDC<\/strong>\uff0c\u4e26\u652f\u4ed8\u4e00\u7b46\u5c0f\u984d\u624b\u7e8c\u8cbb\uff08\u901a\u5e38\u70ba\u501f\u6b3e\u91d1\u984d\u7684 0.09%\uff09\u3002<\/li>\n\n\n\n<li>\u5047\u8a2d\u624b\u7e8c\u8cbb\u70ba 900 USDC\uff081,000,000 * 0.09%\uff09\u3002<\/li>\n\n\n\n<li>\u653b\u64ca\u8005\u6700\u7d42\u511f\u9084\u4e86 <strong>1,000,900 USDC<\/strong>\u3002<\/li>\n\n\n\n<li>\u653b\u64ca\u8005\u6700\u521d\u5f9e DEX B \u8ce3\u51fa\u4ee3\u5e63 X \u7372\u5f97 <strong>1,100,000 USDC<\/strong>\uff0c\u511f\u9084\u501f\u6b3e\u5f8c\uff0c\u6700\u7d42\u7684\u5229\u6f64\u662f <strong>99,100 USDC<\/strong>\uff081,100,000 &#8211; 1,000,900\uff09\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6574\u500b\u8cb7\u5165\u3001\u8ce3\u51fa\u3001\u9084\u6b3e\u7684\u6d41\u7a0b\u90fd\u5728\u4e00\u7b46\u4ea4\u6613\u4e2d\u81ea\u52d5\u5b8c\u6210\uff0c\u9019\u5c31\u662f\u9583\u96fb\u8cb8\u5957\u5229\u7684\u6838\u5fc3\u3002\u5982\u679c\u4e0d\u662f\u9583\u96fb\u8cb8\uff0c\u5957\u5229\u8005\u9700\u8981\u6709\u81ea\u5df1\u7684 1,000,000 USDC \u624d\u80fd\u555f\u52d5\u9019\u500b\u5957\u5229\uff0c\u800c\u9583\u96fb\u8cb8\u8b93\u9019\u500b\u904e\u7a0b\u8b8a\u5f97<strong>\u7121\u9700\u672c\u91d1<\/strong>\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u9583\u96fb\u8cb8\u5408\u7d04\u904b\u4f5c\u65b9\u5f0f<\/h2>\n\n\n\n<p>\u5be6\u969b\u7684\u9583\u96fb\u8cb8\u61c9\u7528\u4e2d\u6703\u6709\u5169\u500b\u89d2\u8272\uff1a<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u9583\u96fb\u8cb8\u63d0\u4f9b\u8005\uff08Flash Loan Provider\uff09<\/strong>\uff1a\u9019\u662f\u63d0\u4f9b\u9583\u96fb\u8cb8\u670d\u52d9\u7684\u5354\u8b70\uff0c\u4f8b\u5982 <strong>Aave<\/strong> \u6216 <strong>dYdX<\/strong>\u3002\u5b83\u5011\u7dad\u8b77\u4e00\u500b\u8cc7\u91d1\u6c60\uff0c\u4e26\u7de8\u5beb\u4e86\u4e00\u500b\u667a\u6167\u5408\u7d04\uff0c\u9019\u500b\u5408\u7d04\u8ca0\u8cac\u5728\u501f\u6b3e\u4eba\u8acb\u6c42\u6642\uff0c\u501f\u51fa\u8cc7\u7522\u4e26\u555f\u52d5\u56de\u547c\u7a0b\u5e8f\u3002<\/li>\n\n\n\n<li><strong>\u9583\u96fb\u8cb8\u501f\u6b3e\u4eba\uff08Flash Loan Borrower\uff09<\/strong>\uff1a\u9019\u662f\u767c\u8d77\u9583\u96fb\u8cb8\u8acb\u6c42\u7684\u4f7f\u7528\u8005\u6216\u667a\u6167\u5408\u7d04\u3002\u501f\u6b3e\u4eba\u7684\u5408\u7d04\u5fc5\u9808\u5be6\u73fe\u4e00\u500b\u7279\u5b9a\u7684**\u56de\u547c\uff08callback\uff09**\u51fd\u6578\uff0c\u4ee5\u4fbf\u5728\u501f\u5230\u9322\u5f8c\uff0c\u80fd\u5920\u57f7\u884c\u5176\u81ea\u5b9a\u7fa9\u7684\u908f\u8f2f\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b2c\u4e00\u90e8\u5206\uff1a\u9583\u96fb\u8cb8\u670d\u52d9\u63d0\u4f9b\u8005<\/h3>\n\n\n\n<p>\u9019\u500b\u5408\u7d04\uff08<code>FlashLoanProvider<\/code>\uff09\u8ca0\u8cac\u501f\u51fa\u8cc7\u7522\uff0c\u4e26\u5728\u501f\u51fa\u5f8c\u547c\u53eb\u501f\u6b3e\u4eba\u5408\u7d04\u7684\u56de\u547c\u51fd\u6578\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport \".\/IERC20.sol\"; \n\ninterface IFlashLoanReceiver {\n    function onFlashLoan(address token, uint256 amount) external;\n}\n\ncontract FlashLoanProvider {\n    function flashLoan(address _token, uint256 _amount) external {\n        IERC20(_token).transfer(msg.sender, _amount);\n\n        IFlashLoanReceiver(msg.sender).onFlashLoan(_token, _amount);\n\n        uint256 balanceAfter = IERC20(_token).balanceOf(address(this));\n        require(balanceAfter >= _amount + 1,\"Flash loan not repaid\");\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u7b2c\u4e8c\u90e8\u5206\uff1a\u501f\u6b3e\u4eba\u5408\u7d04<\/h3>\n\n\n\n<p>\u9019\u500b\u5408\u7d04\uff08<code>FlashLoanBorrower<\/code>\uff09\u8ca0\u8cac\u767c\u51fa\u8acb\u6c42\u4e26\u5be6\u73fe\u56de\u547c\u51fd\u6578\u4f86\u8655\u7406\u501f\u4f86\u7684\u8cc7\u7522\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport \".\/IERC20.sol\";  \nimport \".\/IFlashLoanReceiver.sol\";  \n\ncontract FlashLoanBorrower is IFlashLoanReceiver {\n    address public providerAddress; \n\n    constructor(address _providerAddress) {\n        providerAddress = _providerAddress;\n    }\n\n    function requestLoan(address _token, uint256 _amount) external {\n        FlashLoanProvider(providerAddress).flashLoan(_token, _amount);\n    }\n\n    function onFlashLoan(address _token, uint256 _amount) external override {\n        \/\/ Here you would execute your core logic...\n\n        uint256 amountToRepay = _amount + 1;  \n        require(IERC20(_token).balanceOf(address(this)) >= amountToRepay,\"Not enough funds to repay loan\");\n        IERC20(_token).transfer(providerAddress, amountToRepay);\n    }\n}<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u9583\u96fb\u8cb8\u670d\u52d9\u63d0\u4f9b\u8005\u7684\u7bc4\u4f8b\u4ee3\u78bc\u89e3\u8aaa <\/h2>\n\n\n\n<p>\u7a0b\u5f0f\u78bc\u7684\u6838\u5fc3\u529f\u80fd\u662f\uff1a\u5c07\u8cc7\u91d1\u501f\u51fa\u7d66\u547c\u53eb\u8005\uff0c\u4e26\u7acb\u5373\u547c\u53eb\u5176\u56de\u547c\u51fd\u6578\uff0c\u4ee5\u78ba\u4fdd\u5728\u55ae\u4e00\u4ea4\u6613\u5167\u5b8c\u6210\u6574\u500b\u501f\u8cb8\u5faa\u74b0\u3002\u7a0b\u5f0f\u78bc\u5206\u70ba\u5e7e\u500b\u90e8\u5206\u4f86\u89e3\u91cb\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u4ecb\u9762 (Interface) \u5b9a\u7fa9<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>interface IFlashLoanReceiver {\n    function onFlashLoan(address token, uint256 amount) external;\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>IFlashLoanReceiver<\/code><\/strong> \u662f\u4e00\u500b\u4ecb\u9762\uff08Interface\uff09\uff0c\u5b83\u5b9a\u7fa9\u4e86\u4e00\u500b\u540d\u70ba <code>onFlashLoan<\/code> \u7684\u51fd\u6578\u3002<\/li>\n\n\n\n<li>\u4efb\u4f55\u60f3\u8981\u501f\u7528\u9583\u96fb\u8cb8\u7684\u667a\u6167\u5408\u7d04\u90fd\u5fc5\u9808\u5be6\u4f5c\u9019\u500b\u4ecb\u9762\u3002<\/li>\n\n\n\n<li>\u9019\u5c31\u50cf\u662f\u9583\u96fb\u8cb8\u63d0\u4f9b\u8005\u8207\u501f\u6b3e\u4eba\u4e4b\u9593\u7684\u5408\u7d04\uff1a\u4f60\u5fc5\u9808\u627f\u8afe\u4f60\u7684\u5408\u7d04\u6709\u9019\u500b <code>onFlashLoan<\/code> \u51fd\u6578\uff0c\u6211\u624d\u80fd\u5c07\u9322\u501f\u7d66\u4f60\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u670d\u52d9\u63d0\u4f9b\u8005\u5408\u7d04<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>contract FlashLoanProvider {\n    function flashLoan(address _token, uint256 _amount) external {\n    \/\/ ...\n}<\/code><\/pre>\n\n\n\n<p>\u9019\u500b\u5408\u7d04\uff08<code>FlashLoanProvider<\/code>\uff09\u662f\u9583\u96fb\u8cb8\u7684\u6838\u5fc3\u3002\u5b83\u5305\u542b\u4e86\u9583\u96fb\u8cb8\u7684\u4e3b\u8981\u908f\u8f2f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u9583\u96fb\u8cb8\u7684\u4e3b\u8981\u908f\u8f2f<\/h3>\n\n\n\n<p>\u9019\u662f\u6574\u500b\u9583\u96fb\u8cb8\u7684\u6838\u5fc3\u529f\u80fd\u3002\u7576\u4e00\u500b\u5916\u90e8\u5730\u5740\u547c\u53eb\u9019\u500b\u51fd\u6578\u6642\uff0c\u6703\u57f7\u884c\u4ee5\u4e0b\u6b65\u9a5f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    IERC20(_token).transfer(msg.sender, _amount);\n    IFlashLoanReceiver(msg.sender).onFlashLoan(_token, _amount);\n    uint256 balanceAfter = IERC20(_token).balanceOf(address(this));\n    require( balanceAfter >= _amount + 1, \"Flash loan not repaid\");<\/code><\/pre>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u501f\u51fa\u8cc7\u7522<\/strong>\uff1a<code>IERC20(_token).transfer(msg.sender, _amount);<\/code>\n<ul class=\"wp-block-list\">\n<li>\u9019\u4e00\u884c\u5c07\u6307\u5b9a\u7684\u4ee3\u5e63 <code>_token<\/code> \u548c\u91d1\u984d <code>_amount<\/code> \u5f9e <code>FlashLoanProvider<\/code> \u5408\u7d04\u8f49\u79fb\u7d66\u767c\u8d77\u4ea4\u6613\u7684\u4eba (<code>msg.sender<\/code>)\u3002\u6b64\u6642\uff0c\u501f\u6b3e\u4eba\u6b63\u5f0f\u7372\u5f97\u4e86\u8cc7\u91d1\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u547c\u53eb\u56de\u547c\u51fd\u6578<\/strong>\uff1a<code>IFlashLoanReceiver(msg.sender).onFlashLoan(_token, _amount);<\/code>\n<ul class=\"wp-block-list\">\n<li>\u9019\u662f<strong>\u9583\u96fb\u8cb8\u7684\u7cbe\u9ad3<\/strong>\u3002\u5408\u7d04\u6703\u7acb\u523b\u547c\u53eb\u501f\u6b3e\u4eba\u5408\u7d04\u4e2d\u5df2\u5be6\u4f5c\u7684 <code>onFlashLoan<\/code> \u51fd\u6578\u3002<\/li>\n\n\n\n<li>\u5728\u9019\u500b\u51fd\u6578\u4e2d\uff0c\u501f\u6b3e\u4eba\u7684\u5408\u7d04\u6703\u57f7\u884c\u6240\u6709\u64cd\u4f5c\uff08\u4f8b\u5982\u5957\u5229\u3001\u511f\u9084\u50b5\u52d9\uff09\u3002\u6240\u6709\u908f\u8f2f\u90fd\u5fc5\u9808\u5728\u9019\u88e1\u5b8c\u6210\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u6aa2\u67e5\u9084\u6b3e<\/strong>\uff1a<code>require(balanceAfter >= _amount + 1, \"Flash loan not repaid\");<\/code>\n<ul class=\"wp-block-list\">\n<li>\u7576 <code>onFlashLoan<\/code> \u51fd\u6578\u57f7\u884c\u5b8c\u7562\u5f8c\uff0c\u7a0b\u5f0f\u78bc\u6703\u56de\u5230\u9019\u88e1\u3002<\/li>\n\n\n\n<li>\u9019\u4e00\u884c\u6703\u6aa2\u67e5 <code>FlashLoanProvider<\/code> \u5408\u7d04\u7684\u9918\u984d\u3002\u5b83\u8981\u6c42\u5408\u7d04\u4e2d\u7684\u4ee3\u5e63\u9918\u984d\u5fc5\u9808\u5927\u65bc\u6216\u7b49\u65bc\u501f\u51fa\u7684\u91d1\u984d\u52a0\u4e0a\u624b\u7e8c\u8cbb\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u9019\u500b\u689d\u4ef6\u4e0d\u6eff\u8db3\uff0c<code>require<\/code> \u51fd\u6578\u6703\u89f8\u767c\u4ea4\u6613\u5931\u6557\uff08revert\uff09\u3002<\/li>\n\n\n\n<li><code>+ 1<\/code>\uff1a\u9019\u4ee3\u8868\u4e86\u624b\u7e8c\u8cbb\u3002\u5728\u771f\u5be6\u7684\u9583\u96fb\u8cb8\u5354\u8b70\u4e2d\uff0c\u624b\u7e8c\u8cbb\u901a\u5e38\u662f\u4e00\u500b\u5c0f\u6578\uff0c\u800c\u4e0d\u662f <code>1<\/code>\uff0c\u9019\u88e1\u7684 <code>+ 1<\/code> \u662f\u7c21\u5316\u5f8c\u7684\u7bc4\u4f8b\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u7e3d\u9ad4\u4f86\u8aaa\uff0c\u5982\u679c <code>onFlashLoan<\/code> \u51fd\u6578\u57f7\u884c\u6210\u529f\u4e14\u9806\u5229\u9084\u6b3e\uff0c\u6574\u500b\u4ea4\u6613\u5c31\u6703\u88ab\u78ba\u8a8d\u3002\u53cd\u4e4b\uff0c\u5982\u679c\u9084\u6b3e\u5931\u6557\uff0c\u6574\u7b46\u4ea4\u6613\u6703\u88ab\u64a4\u92b7\uff0c\u6240\u6709\u8cc7\u91d1\u90fd\u6703\u56de\u5230\u6700\u521d\u7684\u72c0\u614b\uff0c\u9019\u5c31\u662f\u9583\u96fb\u8cb8\u96f6\u98a8\u96aa\u7684\u4f86\u6e90\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u501f\u6b3e\u4eba\u5408\u7d04\u7bc4\u4f8b\u4ee3\u78bc\u89e3\u8aaa<\/h2>\n\n\n\n<p>\u9019\u500b\u5408\u7d04\u4e3b\u8981\u767c\u51fa\u9583\u96fb\u8cb8\u8acb\u6c42\uff0c\u4e26\u5728\u540c\u4e00\u7b46\u4ea4\u6613\u4e2d\u8655\u7406\u501f\u4f86\u7684\u8cc7\u91d1\uff0c\u7136\u5f8c\u9084\u6b3e\u3002\u7a0b\u5f0f\u78bc\u5206\u70ba\u5e7e\u500b\u90e8\u5206\u4f86\u89e3\u91cb\u5982\u4e0b\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u5408\u7d04\u5b9a\u7fa9\u8207\u7e7c\u627f<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import \".\/IERC20.sol\";  \nimport \".\/IFlashLoanReceiver.sol\"; \n\ncontract FlashLoanBorrower is IFlashLoanReceiver {\n    address public providerAddress; \n\n    constructor(address _providerAddress) {\n        providerAddress = _providerAddress;\n    }\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>import<\/code>\n<ul class=\"wp-block-list\">\n<li>import &#8220;.\/IERC20.sol&#8221;;    \u5047\u8a2d\u7684IERC20\u4ecb\u9762<\/li>\n\n\n\n<li>import &#8220;.\/IFlashLoanReceiver.sol&#8221;;  \u5f15\u5165\u7b2c\u4e00\u90e8\u5206\u5b9a\u7fa9\u7684\u4ecb\u9762<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>is IFlashLoanReceiver<\/code><\/strong>\uff1a\u9019\u884c\u975e\u5e38\u95dc\u9375\u3002\u5b83\u8868\u660e <code>FlashLoanBorrower<\/code> \u9019\u500b\u5408\u7d04\u7e7c\u627f\u4e86 <code>IFlashLoanReceiver<\/code> \u4ecb\u9762\u3002\u9019\u610f\u5473\u8457\u5b83\u5fc5\u9808\u5305\u542b <code>IFlashLoanReceiver<\/code> \u4ecb\u9762\u4e2d\u5b9a\u7fa9\u7684 <code>onFlashLoan<\/code> \u51fd\u6578\u3002<\/li>\n\n\n\n<li><strong><code>providerAddress<\/code><\/strong>\uff1a\u9019\u662f\u7528\u4f86\u5132\u5b58\u9583\u96fb\u8cb8\u670d\u52d9\u63d0\u4f9b\u8005\u7684\u5408\u7d04\u5730\u5740\u3002\u5728\u5408\u7d04\u90e8\u7f72\u6642\uff0c\u4f60\u9700\u8981\u6307\u5b9a\u9019\u500b\u5730\u5740\uff0c\u9019\u6a23 <code>FlashLoanBorrower<\/code> \u624d\u77e5\u9053\u8981\u53bb\u54ea\u88e1\u501f\u9322\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u8acb\u6c42\u8cb8\u6b3e\u7684\u51fd\u6578<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>function requestLoan(address _token, uint256 _amount) external {\n    FlashLoanProvider(providerAddress).flashLoan(_token, _amount);\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>requestLoan<\/code><\/strong>\uff1a\u9019\u662f\u4f7f\u7528\u8005\u547c\u53eb\u7684\u51fd\u6578\uff0c\u7528\u4f86\u767c\u8d77\u9583\u96fb\u8cb8\u8acb\u6c42\u3002<\/li>\n\n\n\n<li><code>FlashLoanProvider(providerAddress).flashLoan(_token, _amount);<\/code>\uff1a\u9019\u884c\u7a0b\u5f0f\u78bc\u505a\u4e86\u5169\u4ef6\u4e8b\uff1a\n<ol start=\"1\" class=\"wp-block-list\">\n<li>\u5b83\u5c07 <code>providerAddress<\/code> \u8996\u70ba\u4e00\u500b\u9583\u96fb\u8cb8\u63d0\u4f9b\u8005\u5408\u7d04\u3002<\/li>\n\n\n\n<li>\u5b83\u547c\u53eb\u8a72\u5408\u7d04\u7684 <code>flashLoan<\/code> \u51fd\u6578\uff0c\u767c\u8d77\u501f\u6b3e\u8acb\u6c42\uff0c\u4e26\u5c07\u4ee3\u5e63\u548c\u91d1\u984d\u4f5c\u70ba\u53c3\u6578\u50b3\u5165\u3002<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u56de\u547c\u51fd\u6578\uff1a\u6838\u5fc3\u908f\u8f2f\u6240\u5728<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>function onFlashLoan(address _token, uint256 _amount) external override {\n\n    \/\/ Here you would execute your core logic...\n\n    uint256 amountToRepay = _amount + 1; \n    require(IERC20(_token).balanceOf(address(this)) >= amountToRepay,\"Not enough funds to repay loan\");\n    IERC20(_token).transfer(providerAddress, amountToRepay);\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>onFlashLoan<\/code><\/strong>\uff1a\u9019\u662f\u9583\u96fb\u8cb8\u7684\u7cbe\u9ad3\u6240\u5728\uff0c\u5b83\u662f\u4e00\u500b\u56de\u547c\u51fd\u6578\u3002\n<ul class=\"wp-block-list\">\n<li>\u7576 <code>requestLoan<\/code> \u547c\u53eb <code>FlashLoanProvider<\/code> \u7684 <code>flashLoan<\/code> \u51fd\u6578\u6642\uff0c\u9583\u96fb\u8cb8\u63d0\u4f9b\u8005\u6703\u5c07\u8cc7\u91d1\u8f49\u7d66 <code>FlashLoanBorrower<\/code>\uff0c\u4e26\u81ea\u52d5\u547c\u53eb\u9019\u500b <code>onFlashLoan<\/code> \u51fd\u6578\u3002<\/li>\n\n\n\n<li>\u6240\u6709\u7684\u5957\u5229\u3001\u4ea4\u6613\u6216\u5176\u4ed6\u908f\u8f2f\u90fd\u5728\u9019\u500b\u51fd\u6578\u4e2d\u57f7\u884c\u3002<\/li>\n\n\n\n<li><strong><code>external override<\/code><\/strong>\uff1a<code>external<\/code> \u8aaa\u660e\u9019\u500b\u51fd\u6578\u53ea\u80fd\u5f9e\u5408\u7d04\u5916\u90e8\u547c\u53eb\u3002<code>override<\/code> \u5247\u8868\u793a\u9019\u500b\u51fd\u6578\u8986\u84cb\u4e86\u5b83\u7e7c\u627f\u81ea <code>IFlashLoanReceiver<\/code> \u4ecb\u9762\u7684\u540c\u540d\u51fd\u6578\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u9084\u6b3e\u908f\u8f2f<\/strong>\uff1a\u5728\u51fd\u6578\u7684\u7d50\u5c3e\uff0c\u5b83\u5fc5\u9808\u78ba\u4fdd\u6709\u8db3\u5920\u7684\u9322\u4f86<strong>\u511f\u9084\u501f\u6b3e\u548c\u624b\u7e8c\u8cbb<\/strong>\uff0c\u4e26\u57f7\u884c\u8f49\u5e33\u3002\u5982\u679c\u9019\u88e1\u7684 <code>require<\/code> \u6aa2\u67e5\u5931\u6557\uff0c\u6574\u7b46\u4ea4\u6613\u5c31\u6703\u88ab\u64a4\u92b7\u3002\n<ul class=\"wp-block-list\">\n<li><code>amountToRepay = _amount + 1<\/code>\uff1a\u9019\u4e00\u884c\u8a08\u7b97\u51fa\u4f60\u5fc5\u9808\u511f\u9084\u7684<strong>\u7e3d\u91d1\u984d<\/strong>\uff0c\u5b83\u7b49\u65bc\u501f\u6b3e\u91d1\u984d\u52a0\u4e0a\u624b\u7e8c\u8cbb\u3002\n<ul class=\"wp-block-list\">\n<li><code>+ 1<\/code>\uff1a\u9019\u4ee3\u8868\u4e86\u624b\u7e8c\u8cbb\u3002\u5728\u771f\u5be6\u7684\u9583\u96fb\u8cb8\u5354\u8b70\u4e2d\uff0c\u624b\u7e8c\u8cbb\u901a\u5e38\u662f\u4e00\u500b\u5c0f\u6578\uff0c\u800c\u4e0d\u662f <code>1<\/code>\uff0c\u9019\u88e1\u7684 <code>+ 1<\/code> \u662f\u7c21\u5316\u5f8c\u7684\u7bc4\u4f8b\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>IERC20(_token).balanceOf(address(this))<\/code>\uff1a\u9019\u884c\u7a0b\u5f0f\u78bc\u6703\u67e5\u8a62<strong>\u4f60\u7684\u5408\u7d04\uff08<code>FlashLoanBorrower<\/code>\uff09<\/strong>\u4e2d\uff0c\u6307\u5b9a\u7684\u4ee3\u5e63\u9918\u984d\u9084\u6709\u591a\u5c11\u3002<\/li>\n\n\n\n<li><code>IERC20(_token).transfer(...)<\/code>\uff1a\u5c07\u4f60\u61c9\u9084\u7684\u7e3d\u91d1\u984d\uff0c\u5f9e\u4f60\u7684\u5408\u7d04\u4e2d\u8f49\u5e33\u5230\u9583\u96fb\u8cb8\u63d0\u4f9b\u8005\u7684\u5408\u7d04<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\u7e3d\u9ad4\u4f86\u8aaa\uff0c<code>FlashLoanBorrower<\/code> \u5408\u7d04\u5c31\u50cf\u4e00\u500b<strong>\u9810\u5148\u7de8\u5beb\u597d\u7684\u5287\u672c<\/strong>\uff0c\u5b83\u5c07\u501f\u6b3e\u3001\u57f7\u884c\u4efb\u52d9\u548c\u9084\u6b3e\u7684\u6b65\u9a5f\u5168\u90e8\u4e32\u806f\u5728\u4e00\u8d77\uff0c\u4e26\u5728\u55ae\u4e00\u4ea4\u6613\u4e2d\u81ea\u52d5\u5b8c\u6210\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u5957\u5229\uff08Arbitrage\uff09\u8207\u6f0f\u6d1e\u653b\u64ca\uff08Exploit\uff09\u7684\u5340\u5225<\/strong><\/h3>\n\n\n\n<p>\u5982\u679c\u4e00\u500b\u5354\u8b70\u672c\u8eab\u6c92\u6709\u6f0f\u6d1e\uff0c\u9583\u96fb\u8cb8\u5957\u5229\u53ea\u662f\u4e00\u7a2e\u81ea\u52d5\u5316\u5957\u5229**\uff0c\u800c\u4e0d\u662f\u653b\u64ca\u3002<\/p>\n\n\n\n<p>\u7136\u800c\uff0c\u5982\u679c\u5354\u8b70\u7684<strong>\u50f9\u683c\u6a5f\u5236<\/strong>\u6216<strong>\u6e05\u7b97\u908f\u8f2f<\/strong>\u5b58\u5728\u6f0f\u6d1e\uff0c\u9583\u96fb\u8cb8\u7684\u5de8\u984d\u8cc7\u91d1\u5c31\u80fd\u88ab\u7528\u4f86\u653e\u5927\u9019\u7a2e\u6f0f\u6d1e\u3002\u4f8b\u5982\uff0c\u5982\u679c DEX B \u7684\u50f9\u683c\u9810\u8a00\u6a5f\u8b80\u53d6\u50f9\u683c\u6709\u5ef6\u9072\uff0c\u653b\u64ca\u8005\u5c31\u80fd\u5229\u7528\u9583\u96fb\u8cb8\u5728 DEX A \u77ac\u9593\u8cb7\u5165\uff0c\u8b93 DEX B \u7684\u9810\u8a00\u6a5f\u770b\u5230\u4e00\u500b\u904e\u6642\u7684\u4f4e\u50f9\uff0c\u5f9e\u800c\u653e\u5927\u5957\u5229\u6536\u76ca\uff0c\u9019\u5c31\u5f9e\u55ae\u7d14\u7684\u5957\u5229\u8b8a\u6210\u4e86<strong>\u5229\u7528\u6f0f\u6d1e\u7684\u653b\u64ca<\/strong>\u3002<\/p>\n\n\n\n<p>\u9019\u7a2e\u653b\u64ca\u7684\u6210\u529f\u4f9d\u8cf4\u65bc\u5340\u584a\u93c8\u4ea4\u6613\u7684\u300c\u539f\u5b50\u6027\u300d\uff0c\u4e5f\u5c31\u662f\u6240\u6709\u6b65\u9a5f\u8981\u4e48\u90fd\u6210\u529f\uff0c\u8981\u4e48\u90fd\u5931\u6557\u3002\u5982\u679c\u5176\u4e2d\u4efb\u4f55\u4e00\u500b\u6b65\u9a5f\uff08\u4f8b\u5982\u5728 DEX B \u8ce3\u51fa\uff09\u5931\u6557\uff0c\u6574\u500b\u4ea4\u6613\u90fd\u6703\u88ab\u56de\u6eaf\uff0c\u9583\u96fb\u8cb8\u6703\u88ab\u81ea\u52d5\u53d6\u6d88\uff0c\u653b\u64ca\u8005\u4e0d\u6703\u6709\u4efb\u4f55\u640d\u5931\u3002<\/p>\n\n\n\n<p>\u9019\u5169\u8005\u5728\u64cd\u4f5c\u4e0a\u975e\u5e38\u76f8\u4f3c\uff0c\u4f46\u6838\u5fc3\u610f\u5716\u548c\u9053\u5fb7\u754c\u7dda\u4e0a\u5b58\u5728\u6839\u672c\u5dee\u7570\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5957\u5229<\/strong>\uff1a\u5229\u7528\u5e02\u5834\u4e0a<strong>\u81ea\u7136\u5b58\u5728\u7684\u50f9\u5dee<\/strong>\u4f86\u7372\u5229\u3002\u9019\u662f\u4e00\u7a2e\u6b63\u5e38\u4e14\u5065\u5eb7\u7684\u5e02\u5834\u884c\u70ba\uff0c\u6709\u52a9\u65bc\u8b93\u4e0d\u540c\u4ea4\u6613\u6240\u7684\u50f9\u683c\u8da8\u65bc\u4e00\u81f4\u3002\u5957\u5229\u8005\u53ea\u662f\u767c\u73fe\u4e86\u9019\u500b\u50f9\u5dee\uff0c\u4e26\u5229\u7528\u9583\u96fb\u8cb8\u9019\u7a2e\u9ad8\u6548\u5de5\u5177\u4f86\u5feb\u901f\u57f7\u884c\uff0c\u5f9e\u4e2d\u8cfa\u53d6\u5229\u6f64\u3002<\/li>\n\n\n\n<li><strong>\u5229\u7528\u6f0f\u6d1e\u7684\u653b\u64ca<\/strong>\uff1a<strong>\u4eba\u70ba\u5730\u88fd\u9020\u6216\u653e\u5927\u50f9\u5dee<\/strong>\uff0c\u6216\u5229\u7528\u5354\u8b70\u7684<strong>\u8a2d\u8a08\u7f3a\u9677<\/strong>\u4f86\u7372\u5229\u3002\u653b\u64ca\u8005\u4e0d\u50c5\u50c5\u662f\u5728\u767c\u73fe\u6a5f\u6703\uff0c\u66f4\u662f\u5728<strong>\u5275\u9020\u6a5f\u6703<\/strong>\uff0c\u5176\u884c\u70ba\u901a\u5e38\u6703\u5c0e\u81f4\u5176\u4ed6\u7528\u6236\u6216\u5354\u8b70\u672c\u8eab\u906d\u53d7\u640d\u5931\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u5177\u9ad4\u4f8b\u5b50\uff1a<\/strong><\/h3>\n\n\n\n<p>\u70ba\u4e86\u66f4\u597d\u5730\u5340\u5206\u5169\u8005\uff0c\u6211\u5011\u5ef6\u7e8c\u5148\u524d\u7684\u4f8b\u5b50\uff0c\u4e26\u589e\u52a0\u4e00\u500b\u60c5\u5883\uff1a\u4e00\u500b<strong>\u6709\u6f0f\u6d1e\u7684\u501f\u8cb8\u5354\u8b70<\/strong>\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u60c5\u5883\u4e00\uff1a\u7d14\u7cb9\u7684\u9583\u96fb\u8cb8\u5957\u5229<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DEX A<\/strong>\uff1aETH \u50f9\u683c\u70ba <strong>$2000<\/strong>\u3002<\/li>\n\n\n\n<li><strong>DEX B<\/strong>\uff1aETH \u50f9\u683c\u70ba <strong>$2010<\/strong>\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u64cd\u4f5c\uff1a<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u653b\u64ca\u8005\u501f\u5165 <strong>1,000,000 USDC<\/strong> \u7684\u9583\u96fb\u8cb8\u3002<\/li>\n\n\n\n<li>\u5728 <strong>DEX A<\/strong> \u7528 1,000,000 USDC \u8cb7\u5165 <strong>500 ETH<\/strong>\u3002<\/li>\n\n\n\n<li>\u5728 <strong>DEX B<\/strong> \u7528 500 ETH \u8ce3\u51fa\uff0c\u7372\u5f97 <strong>1,005,000 USDC<\/strong>\u3002<\/li>\n\n\n\n<li>\u511f\u9084\u9583\u96fb\u8cb8\u672c\u91d1\u548c\u624b\u7e8c\u8cbb\uff0c\u7372\u5229\u7d04 <strong>4900 USDC<\/strong>\u3002<\/li>\n<\/ol>\n\n\n\n<p><strong>\u7d50\u679c\u5206\u6790\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u7121\u4eba\u53d7\u640d<\/strong>\uff1a\u9019\u6b21\u64cd\u4f5c\u53ea\u662f\u6355\u6349\u4e86\u5e02\u5834\u4e0a\u65e2\u6709\u7684\u50f9\u5dee\uff0c\u6c92\u6709\u4efb\u4f55\u5354\u8b70\u6216\u7528\u6236\u56e0\u70ba\u6b64\u884c\u70ba\u906d\u53d7\u640d\u5931\u3002<\/li>\n\n\n\n<li><strong>\u5e02\u5834\u66f4\u6709\u6548\u7387<\/strong>\uff1aDEX A \u7684 ETH \u50f9\u683c\u56e0\u6b64\u8f15\u5fae\u4e0a\u6f32\uff0cDEX B \u7684 ETH \u50f9\u683c\u8f15\u5fae\u4e0b\u8dcc\uff0c\u6700\u7d42\u4f7f\u5f97\u5169\u8005\u7684\u50f9\u683c\u66f4\u63a5\u8fd1\u3002<\/li>\n\n\n\n<li><strong>\u9019\u5c31\u662f\u5065\u5eb7\u7684\u5957\u5229\u884c\u70ba\u3002<\/strong><\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u60c5\u5883\u4e8c\uff1a\u5229\u7528\u6f0f\u6d1e\u7684\u653b\u64ca<\/strong><\/h4>\n\n\n\n<p>\u73fe\u5728\u6211\u5011\u5f15\u5165\u4e00\u500b\u65b0\u7684\u5143\u7d20\uff1a\u4e00\u500b<strong>\u6709\u6f0f\u6d1e\u7684\u501f\u8cb8\u5354\u8b70<\/strong>\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DEX A<\/strong>\uff1aETH \u50f9\u683c\u70ba <strong>$2000<\/strong>\u3002<\/li>\n\n\n\n<li><strong>DEX B<\/strong>\uff1aETH \u50f9\u683c\u70ba <strong>$2010<\/strong>\u3002<\/li>\n\n\n\n<li><strong>\u501f\u8cb8\u5354\u8b70<\/strong>\uff1a\u4f9d\u8cf4 <strong>DEX A \u7684\u50f9\u683c<\/strong>\u4f86\u6c7a\u5b9a\u7528\u6236\u7684\u62b5\u62bc\u54c1\u50f9\u503c\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u653b\u64ca\u64cd\u4f5c\uff1a<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u653b\u64ca\u8005\u501f\u5165 <strong>1,000,000 USDC<\/strong> \u7684\u9583\u96fb\u8cb8\u3002<\/li>\n\n\n\n<li>\u5728 <strong>DEX A<\/strong> \u7528 1,000,000 USDC <strong>\u8cb7\u5165<\/strong>\u5927\u91cf\u7684 ETH\u3002\u9019\u6703\u8b93 DEX A \u7684 ETH \u50f9\u683c\u77ac\u9593<strong>\u66b4\u6f32<\/strong>\u5230 <strong>$2100<\/strong>\u3002<\/li>\n\n\n\n<li>\u653b\u64ca\u8005\u7acb\u5373\u5728\u501f\u8cb8\u5354\u8b70\u4e2d\uff0c\u4ee5\u66b4\u6f32\u5f8c\u7684 ETH \u4f5c\u70ba\u62b5\u62bc\u54c1\uff0c<strong>\u501f\u51fa<\/strong>\u5927\u91cf\u7684\u5176\u4ed6\u4ee3\u5e63\u3002<\/li>\n\n\n\n<li>\u653b\u64ca\u8005\u96a8\u5f8c\u5728 <strong>DEX A<\/strong> \u5c07\u5148\u524d\u8cb7\u5165\u7684 ETH <strong>\u8ce3\u51fa<\/strong>\uff0c\u8b93 ETH \u50f9\u683c\u6062\u5fa9\u6b63\u5e38\u3002<\/li>\n\n\n\n<li>\u511f\u9084\u9583\u96fb\u8cb8\u672c\u91d1\u548c\u624b\u7e8c\u8cbb\u3002<\/li>\n<\/ol>\n\n\n\n<p><strong>\u7d50\u679c\u5206\u6790\uff1a<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u6709\u4eba\u53d7\u640d<\/strong>\uff1a\u56e0\u70ba\u5354\u8b70\u932f\u8aa4\u5730\u76f8\u4fe1\u4e86\u88ab\u64cd\u7e31\u7684\u50f9\u683c\uff0c\u501f\u51fa\u4e86\u8d85\u904e\u61c9\u6709\u50f9\u503c\u7684\u4ee3\u5e63\uff0c\u5c0e\u81f4\u5354\u8b70\u7684\u8cc7\u91d1\u6c60<strong>\u7522\u751f\u8667\u640d<\/strong>\u3002\u653b\u64ca\u8005\u7372\u5229\u4f86\u6e90\u65bc\u5354\u8b70\u8cc7\u91d1\u6c60\u7684\u640d\u5931\u3002<\/li>\n\n\n\n<li><strong>\u4eba\u70ba\u88fd\u9020\u7684\u6a5f\u6703<\/strong>\uff1a\u9019\u500b\u300c\u8cfa\u9322\u300d\u6a5f\u6703\u4e26\u975e\u5e02\u5834\u81ea\u7136\u5b58\u5728\uff0c\u800c\u662f\u653b\u64ca\u8005\u7528\u9583\u96fb\u8cb8<strong>\u4eba\u70ba\u88fd\u9020<\/strong>\u7684\u50f9\u683c\u6ce2\u52d5\uff0c\u4f86\u6b3a\u9a19\u5354\u8b70\u7684\u9810\u8a00\u6a5f\u3002<\/li>\n\n\n\n<li><strong>\u9019\u5c31\u662f\u60e1\u610f\u7684\u6f0f\u6d1e\u653b\u64ca\u3002<\/strong><\/li>\n<\/ul>\n\n\n\n<p>\u7e3d\u7d50\u4f86\u8aaa\uff0c\u5957\u5229\u662f\u5229\u7528\u300c<strong>\u5df2\u5b58\u5728\u7684<\/strong>\u300d\u50f9\u5dee\uff0c\u800c\u653b\u64ca\u662f\u5229\u7528\u9583\u96fb\u8cb8\u7684\u5de8\u984d\u8cc7\u91d1\u300c<strong>\u88fd\u9020<\/strong>\u300d\u4e00\u500b\u5c0d\u81ea\u5df1\u6709\u5229\u7684\u50f9\u5dee\u6216\u60c5\u5883\uff0c\u5f9e\u800c\u5f9e\u5176\u4ed6\u7528\u6236\u6216\u5354\u8b70\u672c\u8eab\u7372\u5229\uff0c\u5c0e\u81f4\u4ed6\u4eba\u53d7\u640d\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\u5176\u4ed6\u9583\u96fb\u8cb8\u6b3e\u653b\u64ca\u7684\u7bc4\u4f8b<\/h4>\n\n\n\n<p>\u4ee5\u4e0b\u662f\u5e38\u898b\u7684\u9583\u96fb\u8cb8\u6b3e\u653b\u64ca\u985e\u578b\uff1a<\/p>\n\n\n\n<p><strong>\u50f9\u683c\u9810\u8a00\u6a5f\u64cd\u63a7\uff08Oracle Manipulation\uff09<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u60c5\u5883<\/strong>\uff1a\u8a31\u591a\u53bb\u4e2d\u5fc3\u5316\u91d1\u878d\uff08DeFi\uff09\u5354\u8b70\u4f9d\u8cf4\u50f9\u683c\u9810\u8a00\u6a5f\uff08\u5982 Chainlink \u6216\u55ae\u4e00\u4ea4\u6613\u6240\u7684\u50f9\u683c\uff09\u4f86\u6c7a\u5b9a\u8cc7\u7522\u50f9\u503c\u6216\u6e05\u7b97\u689d\u4ef6\u3002<\/li>\n\n\n\n<li><strong>\u653b\u64ca\u65b9\u5f0f<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u653b\u64ca\u8005\u501f\u5165\u5927\u91cf\u8cc7\u91d1\uff08\u4f8b\u5982\uff0c1000 \u842c\u7f8e\u5143\u7684\u4ee3\u5e63\uff09\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528\u9019\u4e9b\u8cc7\u91d1\u5728\u67d0\u500b\u53bb\u4e2d\u5fc3\u5316\u4ea4\u6613\u6240\uff08DEX\uff09\u9032\u884c\u5927\u984d\u4ea4\u6613\uff0c\u63a8\u9ad8\u6216\u58d3\u4f4e\u67d0\u4ee3\u5e63\u7684\u50f9\u683c\uff0c\u5f71\u97ff\u9810\u8a00\u6a5f\u5831\u50f9\u3002<\/li>\n\n\n\n<li>\u5229\u7528\u88ab\u64cd\u7e31\u7684\u50f9\u683c\u89f8\u767c\u76ee\u6a19\u5354\u8b70\u7684\u6e05\u7b97\u908f\u8f2f\uff08\u5982\u4f4e\u65bc\u62b5\u62bc\u7387\u7684\u6e05\u7b97\uff09\uff0c\u4ee5\u4f4e\u50f9\u8cb7\u5165\u8cc7\u7522\u3002<\/li>\n\n\n\n<li>\u6062\u5fa9\u5e02\u5834\u50f9\u683c\uff0c\u511f\u9084\u9583\u96fb\u8cb8\u6b3e\uff0c\u4fdd\u7559\u7372\u5229\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u7bc4\u4f8b<\/strong>\uff1a2020 \u5e74\u7684 bZx \u653b\u64ca\uff0c\u653b\u64ca\u8005\u64cd\u7e31\u50f9\u683c\u9810\u8a00\u6a5f\uff0c\u5c0e\u81f4\u5354\u8b70\u8aa4\u4ee5\u70ba\u62b5\u62bc\u54c1\u4e0d\u8db3\uff0c\u5f9e\u800c\u6e05\u7b97\u8cc7\u7522\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u6d41\u52d5\u6027\u6c60\u8017\u76e1\uff08Liquidity Pool Draining\uff09<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u60c5\u5883<\/strong>\uff1a\u81ea\u52d5\u505a\u5e02\u5546\uff08AMM\uff09\u5982 Uniswap \u6216 SushiSwap \u4f7f\u7528\u6d41\u52d5\u6027\u6c60\u4f86\u63d0\u4f9b\u4ea4\u6613\u6d41\u52d5\u6027\u3002<\/li>\n\n\n\n<li><strong>\u653b\u64ca\u65b9\u5f0f<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u653b\u64ca\u8005\u501f\u5165\u5927\u91cf\u4ee3\u5e63\uff0c\u901a\u904e\u5927\u984d\u4ea4\u6613\u8017\u76e1\u67d0\u4e00\u6d41\u52d5\u6027\u6c60\u7684\u8cc7\u7522\u3002<\/li>\n\n\n\n<li>\u5982\u679c AMM \u7684\u5b9a\u50f9\u6216\u514c\u63db\u908f\u8f2f\u5b58\u5728\u6f0f\u6d1e\uff08\u4f8b\u5982\uff0c\u672a\u6b63\u78ba\u8655\u7406\u6975\u7aef\u4ea4\u6613\u91cf\uff09\uff0c\u653b\u64ca\u8005\u53ef\u80fd\u4ee5\u4f4e\u6210\u672c\u63db\u53d6\u5927\u91cf\u5176\u4ed6\u4ee3\u5e63\u3002<\/li>\n\n\n\n<li>\u511f\u9084\u9583\u96fb\u8cb8\u6b3e\uff0c\u4fdd\u7559\u7372\u5229\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u7bc4\u4f8b<\/strong>\uff1a\u67d0\u4e9b\u65e9\u671f AMM \u5354\u8b70\u56e0\u672a\u9650\u5236\u5927\u984d\u4ea4\u6613\u800c\u88ab\u653b\u64ca\u3002\u6d41\u52d5\u6027\u63d0\u4f9b\u8005\uff08LPs\uff09\u539f\u672c\u5b58\u653e\u5728\u6c60\u5b50\u88e1\u7684\u8cc7\u7522\uff0c\u6703\u56e0\u70ba\u653b\u64ca\u8005\u7684\u884c\u70ba\u800c\u5927\u91cf\u6d41\u5931\uff0c\u6700\u7d42\u53ea\u5269\u4e0b\u50f9\u503c\u4e0d\u9ad8\u7684\u4ee3\u5e63\uff0c\u8499\u53d7\u5de8\u5927\u7684\u8ca1\u52d9\u640d\u5931\u3002\u7531\u65bc\u6d41\u52d5\u6027\u6c60\u8cc7\u91d1\u4e0d\u8db3\uff0c\u5176\u4ed6\u7528\u6236\u4e5f\u7121\u6cd5\u6b63\u5e38\u9032\u884c\u4ea4\u6613\u6216\u63d0\u6b3e\uff0c\u56b4\u91cd\u5f71\u97ff\u4e86\u5354\u8b70\u7684\u904b\u4f5c\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u5957\u5229\u653b\u64ca\uff08Arbitrage Exploits\uff09<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u60c5\u5883<\/strong>\uff1a\u4e0d\u540c\u4ea4\u6613\u6240\u4e4b\u9593\u7684\u4ee3\u5e63\u50f9\u683c\u5b58\u5728\u5dee\u7570\u3002<\/li>\n\n\n\n<li><strong>\u653b\u64ca\u65b9\u5f0f<\/strong>\uff1a\n<ul class=\"wp-block-list\">\n<li>\u653b\u64ca\u8005\u501f\u5165\u5927\u91cf\u8cc7\u91d1\uff0c\u5728\u50f9\u683c\u8f03\u4f4e\u7684\u4ea4\u6613\u6240\u8cb7\u5165\u4ee3\u5e63\uff0c\u7136\u5f8c\u5728\u50f9\u683c\u8f03\u9ad8\u7684\u4ea4\u6613\u6240\u8ce3\u51fa\uff0c\u8cfa\u53d6\u5dee\u50f9\u3002<\/li>\n\n\n\n<li>\u5982\u679c\u76ee\u6a19\u5354\u8b70\u6709\u6f0f\u6d1e\uff08\u4f8b\u5982\uff0c\u672a\u6b63\u78ba\u66f4\u65b0\u50f9\u683c\u6216\u6d41\u52d5\u6027\uff09\uff0c\u653b\u64ca\u8005\u53ef\u653e\u5927\u5957\u5229\u6536\u76ca\u3002<\/li>\n\n\n\n<li>\u511f\u9084\u9583\u96fb\u8cb8\u6b3e\uff0c\u4fdd\u7559\u5957\u5229\u5229\u6f64\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u7bc4\u4f8b<\/strong>\uff1a\u5229\u7528 DEX \u50f9\u683c\u5dee\u7570\u9032\u884c\u5957\u5229\uff0c\u7d50\u5408\u6f0f\u6d1e\u653e\u5927\u6536\u76ca\u3002<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u771f\u5be6\u6848\u4f8b<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>bZx \u653b\u64ca\uff082020 \u5e74\uff09<\/strong>\uff1a\u653b\u64ca\u8005\u5229\u7528\u9583\u96fb\u8cb8\u6b3e\u64cd\u7e31\u50f9\u683c\u9810\u8a00\u6a5f\uff0c\u89f8\u767c\u4e0d\u7576\u6e05\u7b97\uff0c\u7aca\u53d6\u7d04 100 \u842c\u7f8e\u5143\u7684\u8cc7\u7522\u3002<\/li>\n\n\n\n<li><strong>Harvest Finance \u653b\u64ca\uff082020 \u5e74\uff09<\/strong>\uff1a\u653b\u64ca\u8005\u5229\u7528\u9583\u96fb\u8cb8\u6b3e\u64cd\u7e31 Curve \u6c60\u7684\u50f9\u683c\uff0c\u5c0e\u81f4\u5354\u8b70\u640d\u5931\u7d04 2400 \u842c\u7f8e\u5143\u3002<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4fee\u5fa9\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u70ba\u9632\u6b62\u9583\u96fb\u8cb8\u6b3e\u653b\u64ca\uff0c\u958b\u767c\u8005\u61c9\u63a1\u53d6\u4ee5\u4e0b\u63aa\u65bd\uff1a<\/p>\n\n\n\n<p><strong>\u907f\u514d\u5728\u95dc\u9375\u908f\u8f2f\u4e2d\u4f9d\u8cf4\u9583\u96fb\u8cb8\u6b3e<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9650\u5236\u654f\u611f\u529f\u80fd\uff08\u5982\u6e05\u7b97\u6216\u50f9\u683c\u66f4\u65b0\uff09\u50c5\u5728\u53ef\u9a57\u8b49\u4e14\u7a69\u5b9a\u7684\u689d\u4ef6\u4e0b\u57f7\u884c\u3002<\/li>\n\n\n\n<li>\u4f8b\u5982\uff0c\u9650\u5236\u55ae\u7b46\u4ea4\u6613\u4e2d\u53ef\u64cd\u4f5c\u7684\u8cc7\u91d1\u91cf\u6216\u983b\u7387\uff0c\u6e1b\u5c11\u64cd\u7e31\u53ef\u80fd\u6027\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u7a69\u5065\u7684\u9810\u8a00\u6a5f\u8a2d\u8a08<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528<strong>\u6642\u9593\u52a0\u6b0a\u5e73\u5747\u50f9\u683c\uff08TWAP\uff09<\/strong>\uff0c\u800c\u4e0d\u662f\u55ae\u4e00\u4ea4\u6613\u6240\u7684\u5373\u6642\u50f9\u683c\uff0c\u4ee5\u9632\u6b62\u77ed\u6642\u9593\u5167\u7684\u50f9\u683c\u64cd\u7e31\u3002<\/li>\n\n\n\n<li>\u63a1\u7528\u53bb\u4e2d\u5fc3\u5316\u9810\u8a00\u6a5f\uff08\u5982 Chainlink\uff09\uff0c\u5b83\u5011\u805a\u5408\u591a\u500b\u6578\u64da\u6e90\uff0c\u96e3\u4ee5\u88ab\u64cd\u7e31\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u5168\u9762\u6e2c\u8a66<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5728\u6e2c\u8a66\u4e2d\u6a21\u64ec\u9583\u96fb\u8cb8\u6b3e\u653b\u64ca\u5834\u666f\uff0c\u5305\u62ec\u6975\u7aef\u4ea4\u6613\u91cf\u3001\u50f9\u683c\u64cd\u7e31\u548c\u908a\u754c\u689d\u4ef6\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528\u6a21\u7cca\u6e2c\u8a66\uff08fuzz testing\uff09\u6aa2\u67e5\u5354\u8b70\u5728\u7570\u5e38\u8f38\u5165\u4e0b\u7684\u884c\u70ba\u3002<\/li>\n<\/ul>\n\n\n\n<p><strong>\u8a2a\u554f\u63a7\u5236<\/strong>\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9650\u5236\u95dc\u9375\u529f\u80fd\u7684\u8a2a\u554f\u6b0a\u9650\uff0c\u4f8b\u5982\u50c5\u5141\u8a31\u6388\u6b0a\u7528\u6236\u6216\u5408\u7d04\u8abf\u7528\u654f\u611f\u64cd\u4f5c\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528\u767d\u540d\u55ae\u6216\u6b0a\u9650\u63a7\u5236\uff0c\u9632\u6b62\u672a\u6388\u6b0a\u7684\u9583\u96fb\u8cb8\u6b3e\u4ea4\u6613\u3002<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u7e3d\u7d50<\/h4>\n\n\n\n<p>\u9583\u96fb\u8cb8\u6b3e\u653b\u64ca\u5229\u7528\u5340\u584a\u93c8\u4ea4\u6613\u7684\u539f\u5b50\u6027\u548c\u4f4e\u6210\u672c\u501f\u8cb8\uff0c\u7d50\u5408\u5176\u4ed6\u6f0f\u6d1e\uff08\u5982\u9810\u8a00\u6a5f\u64cd\u63a7\u6216\u908f\u8f2f\u932f\u8aa4\uff09\uff0c\u9020\u6210\u56b4\u91cd\u640d\u5931\u3002\u653b\u64ca\u8005\u901a\u904e\u64cd\u7e31\u50f9\u683c\u3001\u8017\u76e1\u6d41\u52d5\u6027\u6216\u5957\u5229\u7372\u5229\uff0c\u5f71\u97ff\u5354\u8b70\u548c\u5e02\u5834\u7a69\u5b9a\u3002\u4fee\u5fa9\u65b9\u6cd5\u5305\u62ec\u7a69\u5065\u7684\u9810\u8a00\u6a5f\u8a2d\u8a08\u3001\u5168\u9762\u6e2c\u8a66\u3001\u8a2a\u554f\u63a7\u5236\u548c\u907f\u514d\u4f9d\u8cf4\u6613\u64cd\u7e31\u7684\u908f\u8f2f\u3002\u958b\u767c\u8005\u61c9\u7279\u5225\u6ce8\u610f\u9583\u96fb\u8cb8\u6b3e\u5834\u666f\u7684\u6e2c\u8a66\uff0c\u4e26\u63a1\u7528\u591a\u5c64\u9632\u8b77\u63aa\u65bd\u4ee5\u78ba\u4fdd\u5354\u8b70\u5b89\u5168\u3002<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9583\u96fb\u8cb8\u662f\u4e00\u7a2e\u5728\u53bb\u4e2d\u5fc3\u5316\u91d1\u878d\uff08DeFi\uff09\u4e2d\u7368\u6709\u7684\u3001\u7121\u64d4\u4fdd\u7684\u501f\u8cb8 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[371],"tags":[],"class_list":["post-2572","post","type-post","status-publish","format-standard","hentry","category-web3-security"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/2572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/comments?post=2572"}],"version-history":[{"count":5,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/2572\/revisions"}],"predecessor-version":[{"id":2758,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/2572\/revisions\/2758"}],"wp:attachment":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/media?parent=2572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/categories?post=2572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/tags?post=2572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}