جستجو برای:
سبد خرید 0
  • آخرین دوره های آموزشی
  • درخواست پروژه
  • مقالات بلاکچین
  • تماس با ما

ورود

گذرواژه خود را فراموش کرده اید؟

ثبت نام

داده های شخصی شما برای پشتیبانی از تجربه شما در این وب سایت، برای مدیریت دسترسی به حساب کاربری شما و برای اهداف دیگری که در سیاست حفظ حریم خصوصی ما شرح داده می شود مورد استفاده قرار می گیرد.

  • 09395149363
  • info@fara-zaman.ir
  • لیست علاقه مندی ها
0
فرازمان | آکادمی بلاکچین
  • آخرین دوره های آموزشیداغ
  • درخواست پروژه
  • مقالات بلاکچینجدید
  • تماس با ما
آخرین اطلاعیه ها
جهت نمایش اطلاعیه باید وارد سایت شوید
شروع کنید

وبلاگ

فرازمان | آکادمی بلاکچیناخبارنمونه قراردادهای هوشمند سالیدیتیتماس نماینده(Delegate call) برای ارتقای قرارداد هوشمند Solidity

تماس نماینده(Delegate call) برای ارتقای قرارداد هوشمند Solidity

22 تیر 1401
ارسال شده توسط مریم طاهری
نمونه قراردادهای هوشمند سالیدیتی
تماس نماینده برای ارتقای قرارداد هوشمند Solidity

از تماس نماینده(Delegate call) برای ارتقاء قرارداد هوشمند Solidity استفاده کنید. یک تابع Delegate call، کد فراخوانی را در محتویات مختلف اجرا می کند (Strorage، msg.sender، msg.value). به خاطر داشته باشید که متغیرهای حالت باید برای تماس گیرنده (Caller) و تماس دهنده (Callee) به یک ترتیب باشند.

چگونه یک تماس نماینده در Solidity کار می کند

قرارداد زیر نمونه ای از نحوه استفاده از تماس نماینده در solidity است. مفهوم این است:

  • کاربران شما با قرارداد A تعامل دارند
  • قرارداد A قرارداد B را منعقد می کند
  • سپس در نقطه ای در آینده می خواهید قرارداد B را ارتقا دهید بنابراین قرارداد C را ایجاد می کنید (ارتقای قرارداد B)
  • سپس قرارداد A را برای تعامل با قرارداد C تغییر می دهید
  • کاربران شما از تغییر در قراردادها انتزاع شده اند
				
					
//to make this work I needed to use a lot of gas in the test environment or it will fail

pragma solidity ^0.6.0;

//Original contract
contract Satellite1 {
    //these state variables need to be in the exact same order of contract A when performing a delegate call
    uint public num;
    address public sender;
    uint public value;
    
    constructor() public { owner = msg.sender; }
    address payable owner;
    
    //capture the following data and save it in the state variables
    function setVars(uint _num) public payable {
        num = _num;
        sender = msg.sender;
        value = msg.value;
    }
    
    //send funds back to the owner and destroy the contract
    function Destruct() public {
        selfdestruct(owner);
    }
    

}

//Now lets say we want to upgrade contract B and we create B2
contract Satellite2 {
    //these state variables need to be in the exact same order of contract A when performing a delegate call
    uint public num;
    address public sender;
    uint public value;
    
    constructor() public { owner = msg.sender; }
    address payable owner;
    
    //capture the following data and save it in the state variables
    function setVars(uint _num) public payable {
        //lets multiply the num by 2 so we can see a change
        num = 2 * _num;
        sender = msg.sender;
        value = msg.value;
    }
    
     //send funds back to the owner and destroy the contract
    function Destruct() public {
        selfdestruct(owner);
    }
}


contract MainContract {
    uint public num;
    address public sender;
    uint public value;

    //this is a delegate call to contract B
    //we are going to send ether to contract so we are making it payable
    function setVars(address _contract, uint _num) public payable {
        
        //this is to make a delegate call to another contract
        //the delegate call will produce 2 outputs.  success if there are no errors and the output of the function in bytes 
      (bool success, bytes memory data) = _contract.delegatecall(
            
            //in abi sig we need to pass in the function signature that we are calling
            abi.encodeWithSignature("setVars(uint256)", _num)
            );
    }
}
				
			
دوره ها و آموزش های فرازمان

در صورتی‌ که تجربه خاصی در خصوص برنامه‌نویسی ندارید می‌توانید از دوره‌های رایگان سایت ما “فرازمان“، استفاده کنید. همچنین اگر به دوره‌های پیشرفته‌تری در این خصوص نیاز داشته باشید، ما با آموزش های حرفه ای که در سایتمان قرار دادیم می توانید به سطح دلخواهتان با تلاش و پشتکار برسید.

نقشه راه

راهنما آکادمی فرازمان

برای یادگیری برنامه نویسی بلاکچین…

دوره مفاهیم پایه برنامه نویسی
دوره جامع جاوا اسکریپت و جی کوئری
آموزش برنامه نویسی سالیدیتی
دوره جامع html/css/bootstap
آموزش پیشرفته برنامه نویسی بلاکچین
آموزش Whitepaper نویسی برای پروژه های بلاکچینی

در این باره بیشتر بخوانید

پیاده سازی بازی ETH 14 در قرارداد هوشمند Solidity

مبادله توکن بدون اعتماد (Trustless) در یک قرارداد هوشمند Solidity

کیف پول مشترک (Shared wallet) در قرارداد هوشمند Solidity

پیاده سازی توکن ERC20 در قرارداد هوشمند Solidity

پل(Bridge) در بلاک چین چیست؟

برچسب ها: آموزش برنامه نویسی سالیدیتیآموزش سالیدیتیسالیدیتیقرارداد هوشمند
جدیدتر پیاده سازی بازی ETH 14 در قرارداد هوشمند Solidity
قبلی پروژه تماس تحت پوشش(Covered call) در قرارداد هوشمند Solidity

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
برچسب‌ها
function nft آموزش برنامه نویسی سالیدیتی آموزش بلاکچین آموزش سالیدیتی اتریوم اخبار بازی اخبار رمز ارز اخبار کریپتو امنیت قرارداد هوشمند ان اف تی اکتیویژن ایلان ماسک بازی بلاکچین برنامه نویسی بلاک چین برنامه نویسی سالیدیتی بلاک چین بیتکوین بیت کوین تحلیل بیت کوین تسلا توابع توابع در سالیدیتی جاوا اسکریپت حسابرسی در قرارداد هوشمند خبر بلاکچین دسنترالند دوج کوین رمزارز سالیدیتی سرمایه گذاری سندباکس قرارداد هوشمند مایکروسافت متاورس مقاله بلاکچین مقاله کریپتویی موزیلا نمونه قرارداد هوشمند سالیدیتی وب3 پی پال کریپتو کسب درامد کیف پول اتریوم کیف پول بلاکچین
  • محبوب
  • جدید
  • دیدگاه ها
دسته‌ها
  • آموزش برنامه نویسی سالیدیتی
  • اتریوم
  • اخبار NFT
  • اخبار متاورس
  • امور مالی غیرمتمرکز
  • برنامه نویسی سالیدیتی
  • بیت کوین
  • سولانا
  • صرافی غیرمتمرکز
  • قرارداد هوشمند
  • کریپتو
  • کیف پول ارز دیجیتال
  • مقالات بلاکچین
  • مقاله
  • نمونه قراردادهای هوشمند سالیدیتی
 فـرا زمان با بهره گیری از دانش روز دنیا و توانایی در آموزش، مشاوره و پیاده سازی انواع پروژه های بلاکچینی پا به عرصه ی رقابت گذاشته و هر روز به گروه و تخصص خود می افزاید.
دسترسی سریع
  • خانه
  • دوره ها
  • اخبار
  • تماس با ما
  • ساری، ابتدای خیابان 15 خرداد،مجتمع بهار،طبقه اول
  • 09395149363
  • info@fara-zaman.ir
خبرنامه

چیزی را از دست ندهید، ثبت نام کنید و در مورد شرکت ما مطلع باشید.

نماد ها

logo-samandehi
© 1400. آکادمی فرازمان - طراحی فرازمان
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://fara-zaman.ir/?p=14273
دسته بندی دوره ها
دوره های من
دسته بندی دوره ها

طراحی وب

  • 1 دوره

WhitePaper

  • 1 محصول

برنامه نویسی اتریوم (سالیدیتی)

  • 4 محصول

کلاس مجازی

  • 1 دوره
دوره های من
برای مشاهده خریدهای خود باید وارد حساب کاربری خود شوید
Twitter Youtube Instagram
مرورگر شما از HTML5 پشتیبانی نمی کند.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند.

گروه تخصصی برنامه نویسی
  • 09395149363
  • پشتیبانی آنلاین
  • 09395149363