نشر التطبيق

لنشر تطبيق FastAPI، يمكننا استخدام Uvicorn. قم بتشغيل الأمر التالي لبدء الخادم:

تطبيق uvicorn:التطبيق --إعادة التحميل

اختبار تطبيق DeFi

لاختبار تطبيق DeFi الخاص بنا، افتح ملف Index.html في متصفح الويب واستخدم الواجهة المتوفرة للتحقق من الأرصدة ونقل الرموز المميزة.

  1. التحقق من الرصيد: أدخل عنوان Ethereum وانقر على \\\"التحقق من الرصيد\\\" لرؤية رصيد الرمز المميز.

  2. تحويل الرموز: أدخل عنوان المستلم ومقدار الرموز المراد تحويلها، ثم انقر فوق \\\"تحويل\\\" لبدء المعاملة.

اعتبارات أمنية

عند إنشاء تطبيقات DeFi، يعد الأمان ذا أهمية قصوى. خذ بعين الاعتبار أفضل الممارسات التالية:

  1. تدقيق العقود الذكية: قم بتدقيق العقود الذكية الخاصة بك من قبل شركة أمنية محترفة.

  2. إدارة المفاتيح الخاصة: لا تقم مطلقًا بترميز المفاتيح الخاصة في تطبيقك. استخدم أنظمة إدارة المفاتيح الآمنة.

  3. التحقق من صحة الإدخال: التحقق من صحة جميع مدخلات المستخدم وتعقيمها لمنع نقاط الضعف الشائعة مثل هجمات إعادة الدخول والتجاوزات.

  4. تحديد المعدل: قم بتطبيق تحديد المعدل على نقاط النهاية الخاصة بك لمنع إساءة الاستخدام.

  5. تحديثات منتظمة: حافظ على تحديث مكتباتك وتبعياتك لتقليل نقاط الضعف المعروفة.

الخلاصة والاتجاهات المستقبلية

\\\"Defi\\\"

في هذه المقالة، قمنا ببناء تطبيق DeFi بسيط باستخدام نظام Python البيئي. لقد قمنا بتغطية أساسيات DeFi، وتفاعلنا مع blockchain Ethereum باستخدام Web3.py، وأنشأنا عقدًا ذكيًا، وقمنا ببناء واجهة خلفية باستخدام FastAPI، ودمجنا واجهة أمامية.

DeFi هو مجال سريع التطور ويتمتع بإمكانيات هائلة. يمكن أن تتضمن الاتجاهات المستقبلية لمشروعك ما يلي:

لا تتردد في التوسع في هذا النظام وتجربة الميزات والبروتوكولات الجديدة. برمجة سعيدة!

","image":"http://www.luping.net","datePublished":"2024-07-31T16:30:03+08:00","dateModified":"2024-07-31T16:30:03+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > بناء تطبيق التمويل اللامركزي (DeFi) باستخدام نظام Python البيئي

بناء تطبيق التمويل اللامركزي (DeFi) باستخدام نظام Python البيئي

تم النشر بتاريخ 2024-07-31
تصفح:688

يُحدث التمويل اللامركزي (DeFi) ثورة في الصناعة المالية من خلال توفير خدمات مالية مفتوحة وشفافة وغير مسموح بها باستخدام تقنية blockchain. في هذه المقالة، سنستكشف كيفية إنشاء تطبيق DeFi بسيط باستخدام نظام Python البيئي. سنتناول المواضيع التالية:

  • مقدمة إلى التمويل اللامركزي
  • إعداد بيئة التطوير
  • التفاعل مع البلوكشين
  • إنشاء العقود الذكية
  • إنشاء واجهة خلفية باستخدام FastAPI
  • دمج الواجهة الأمامية مع Web3.py
  • نشر التطبيق
  • اختبار تطبيق DeFi
  • اعتبارات أمنية
  • الخاتمة والتوجهات المستقبلية

مقدمة إلى التمويل اللامركزي

تستفيد DeFi من تقنية blockchain لتقديم الخدمات المالية مثل الإقراض والاقتراض والتداول وكسب الفائدة دون الاعتماد على الوسطاء الماليين التقليديين مثل البنوك. تشمل المكونات الرئيسية لـ DeFi العقود الذكية والتطبيقات اللامركزية (dApps) ومنصات blockchain مثل Ethereum.

تهيئة بيئة التطوير

قبل أن نبدأ، تأكد من تثبيت Python. سنستخدم العديد من مكتبات Python بما في ذلك Web3.py وFastAPI وBrownie. إنشاء بيئة افتراضية وتثبيت الحزم المطلوبة:

بايثون -m venv venv
source venv/bin/activate # على نظام التشغيل Windows، usevenv\Scripts\activate
تثبيت النقطة web3 fastapi uvicorn pydantic brownie

التفاعل مع Blockchain

سوف نستخدم Web3.py للتفاعل مع blockchain Ethereum. لنبدأ بالاتصال بشبكة blockchain (سنستخدم شبكة اختبار Ropsten) والتحقق من رصيد العنوان.

blockchain.py

from web3 import Web3

# Connect to the Ropsten testnet
infura_url = 'https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID'
web3 = Web3(Web3.HTTPProvider(infura_url))

def check_balance(address):
    balance = web3.eth.get_balance(address)
    return web3.fromWei(balance, 'ether')

إنشاء العقود الذكية

العقود الذكية هي عقود ذاتية التنفيذ مع كتابة شروط الاتفاقية مباشرة في التعليمات البرمجية. سوف نستخدم Solidity لكتابة عقد ذكي بسيط للرمز المميز.

contracts/Token.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Token {
    string public name = "MyToken";
    string public symbol = "MTK";
    uint8 public decimals = 18;
    uint256 public totalSupply = 1000000 * (10 ** uint256(decimals));
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    constructor() {
        balanceOf[msg.sender] = totalSupply;
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(_to != address(0));
        require(balanceOf[msg.sender] >= _value);

        balanceOf[msg.sender] -= _value;
        balanceOf[_to]  = _value;

        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value) public returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_to != address(0));
        require(balanceOf[_from] >= _value);
        require(allowance[_from][msg.sender] >= _value);

        balanceOf[_from] -= _value;
        balanceOf[_to]  = _value;
        allowance[_from][msg.sender] -= _value;

        emit Transfer(_from, _to, _value);
        return true;
    }
}

تجميع ونشر العقد باستخدام براوني:

كعكة الحرف الأول
تجميع الكعكة
حسابات براوني الناشر الجديد
البرامج النصية لتشغيل الكعكة/deploy.py

scripts/deploy.py

from brownie import Token, accounts

def main():
    deployer = accounts.load('deployer')
    token = Token.deploy({'from': deployer})

Defi diagram

بناء الواجهة الخلفية باستخدام FastAPI

سنقوم بإنشاء واجهة خلفية FastAPI للتفاعل مع عقدنا الذكي. ستوفر الواجهة الخلفية نقاط النهاية للتحقق من الأرصدة ونقل الرموز المميزة.

app.py

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from web3 import Web3
import json

app = FastAPI()

infura_url = 'https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID'
web3 = Web3(Web3.HTTPProvider(infura_url))
contract_address = 'YOUR_CONTRACT_ADDRESS'
abi = json.loads('[YOUR_CONTRACT_ABI]')

contract = web3.eth.contract(address=contract_address, abi=abi)
deployer = web3.eth.account.privateKeyToAccount('YOUR_PRIVATE_KEY')

class TransferRequest(BaseModel):
    to: str
    amount: float

@app.get("/balance/{address}")
async def get_balance(address: str):
    try:
        balance = contract.functions.balanceOf(address).call()
        return {"balance": web3.fromWei(balance, 'ether')}
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

@app.post("/transfer")
async def transfer_tokens(transfer_request: TransferRequest):
    try:
        to_address = transfer_request.to
        amount = web3.toWei(transfer_request.amount, 'ether')
        nonce = web3.eth.getTransactionCount(deployer.address)
        txn = contract.functions.transfer(to_address, amount).buildTransaction({
            'chainId': 3,
            'gas': 70000,
            'gasPrice': web3.toWei('1', 'gwei'),
            'nonce': nonce,
        })
        signed_txn = web3.eth.account.signTransaction(txn, private_key=deployer.key)
        tx_hash = web3.eth.sendRawTransaction(signed_txn.rawTransaction)
        return {"transaction_hash": web3.toHex(tx_hash)}
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

دمج الواجهة الأمامية مع Web3.py

يمكننا إنشاء واجهة أمامية بسيطة للتفاعل مع واجهة FastAPI الخلفية الخاصة بنا وعرض أرصدة الرموز المميزة وتسهيل عمليات النقل. هنا، سنستخدم الحد الأدنى من إعداد HTML وJavaScript لتوضيح هذا التفاعل.

index.html



    DeFi Application


    

DeFi Application

Check Balance

Transfer Tokens

نشر التطبيق

لنشر تطبيق FastAPI، يمكننا استخدام Uvicorn. قم بتشغيل الأمر التالي لبدء الخادم:

تطبيق uvicorn:التطبيق --إعادة التحميل

اختبار تطبيق DeFi

لاختبار تطبيق DeFi الخاص بنا، افتح ملف Index.html في متصفح الويب واستخدم الواجهة المتوفرة للتحقق من الأرصدة ونقل الرموز المميزة.

  1. التحقق من الرصيد: أدخل عنوان Ethereum وانقر على "التحقق من الرصيد" لرؤية رصيد الرمز المميز.

  2. تحويل الرموز: أدخل عنوان المستلم ومقدار الرموز المراد تحويلها، ثم انقر فوق "تحويل" لبدء المعاملة.

اعتبارات أمنية

عند إنشاء تطبيقات DeFi، يعد الأمان ذا أهمية قصوى. خذ بعين الاعتبار أفضل الممارسات التالية:

  1. تدقيق العقود الذكية: قم بتدقيق العقود الذكية الخاصة بك من قبل شركة أمنية محترفة.

  2. إدارة المفاتيح الخاصة: لا تقم مطلقًا بترميز المفاتيح الخاصة في تطبيقك. استخدم أنظمة إدارة المفاتيح الآمنة.

  3. التحقق من صحة الإدخال: التحقق من صحة جميع مدخلات المستخدم وتعقيمها لمنع نقاط الضعف الشائعة مثل هجمات إعادة الدخول والتجاوزات.

  4. تحديد المعدل: قم بتطبيق تحديد المعدل على نقاط النهاية الخاصة بك لمنع إساءة الاستخدام.

  5. تحديثات منتظمة: حافظ على تحديث مكتباتك وتبعياتك لتقليل نقاط الضعف المعروفة.

الخلاصة والاتجاهات المستقبلية

Defi

في هذه المقالة، قمنا ببناء تطبيق DeFi بسيط باستخدام نظام Python البيئي. لقد قمنا بتغطية أساسيات DeFi، وتفاعلنا مع blockchain Ethereum باستخدام Web3.py، وأنشأنا عقدًا ذكيًا، وقمنا ببناء واجهة خلفية باستخدام FastAPI، ودمجنا واجهة أمامية.

DeFi هو مجال سريع التطور ويتمتع بإمكانيات هائلة. يمكن أن تتضمن الاتجاهات المستقبلية لمشروعك ما يلي:

  • دمج المزيد من بروتوكولات DeFi: استكشف دمج بروتوكولات DeFi الأخرى مثل منصات الإقراض (مثل Aave) أو التبادلات اللامركزية (مثل Uniswap).

  • تحسين الواجهة الأمامية: قم ببناء واجهة أمامية أكثر تطورًا باستخدام أطر عمل مثل React.js أو Vue.js.

  • إضافة مصادقة المستخدم: تنفيذ مصادقة المستخدم والترخيص لإنشاء تجربة أكثر تخصيصًا.

  • توسيع وظائف العقد الذكي: أضف المزيد من الميزات إلى عقدك الذكي، مثل التوقيع المساحي أو الحوكمة أو زراعة العائد.

لا تتردد في التوسع في هذا النظام وتجربة الميزات والبروتوكولات الجديدة. برمجة سعيدة!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/rishisharma/building-a-decentralized-finance-defi-application-using-python-ecosystem-o6j?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3