د ګمارلو دمخه د سمارټ قرارداد پته څنګه وټاکئ: د کریپټو تبادلې لپاره د CREATE2 کارول

د بلاکچین موضوع نه یوازې د هر ډول هایپ سرچینه ده ، بلکه د ټیکنالوژیکي لید څخه خورا ارزښتناک نظرونه هم دي. له همدې امله، هغې د لمر د ښار د اوسېدونکو نه تېر شو. خلک له نږدې ګوري ، مطالعه کوي ، هڅه کوي خپل تخصص په دودیز انفوبیس کې د بلاکچین سیسټمونو ته واړوي. تر دې دمه ، په نقطه نظر: د Rostelecom-Solar یو له پرمختګونو څخه د دې وړتیا لري چې د بلاکچین پراساس د سافټویر امنیت چیک کړي. او د لارې په اوږدو کې ، د بلاکچین ټولنې پلي شوي ستونزو حل کولو په اړه ځینې فکرونه راپورته کیږي. د دې ژوند هیکونو څخه یو - د CREATE2 په کارولو سره د ګمارلو دمخه د سمارټ قرارداد پته څنګه وټاکئ - نن زه غواړم تاسو سره د کټ لاندې شریک کړم.

د ګمارلو دمخه د سمارټ قرارداد پته څنګه وټاکئ: د کریپټو تبادلې لپاره د CREATE2 کارول
د CREATE2 اپکوډ د دې کال د فبروري په 28 د قسطنطنیه هارډ فورک کې اضافه شو. لکه څنګه چې په EIP کې ویل شوي، دا اپکوډ په ابتدايي توګه د دولتي چینلونو لپاره معرفي شوی. په هرصورت، موږ دا د بلې ستونزې حل کولو لپاره کارولې.

په تبادله کې د بیلانس سره کاروونکي شتون لري. موږ باید هر کارونکي ته د ایتیریم پته چمتو کړو، کوم چې هر څوک کولی شي ټوکنونه واستوي، په دې توګه د دوی حساب ډک کړي. راځئ چې دې پتې ته "بیتونه" ووایو. کله چې ټوکن بټو ته ورسیږي، موږ باید دوی یو واحد والټ (هاټ والټ) ته واستوو.

په لاندې برخو کې، زه د CREATE2 پرته د دې ستونزې حل کولو اختیارونه تحلیلوم او تشریح کوم چې ولې موږ دوی پریښودل. که تاسو یوازې وروستۍ پایلې ته لیوالتیا لرئ، تاسو کولی شئ دا د وروستي حل برخې کې ومومئ.

د Ethereum پته

ترټولو ساده حل د نوي کاروونکو لپاره د نوي ایتیروم پتې رامینځته کول دي. دا پته به د المارۍ وي. له والټ څخه هاټ والټ ته د ټوکنونو لیږدولو لپاره ، تاسو اړتیا لرئ د فنکشن په زنګ وهلو سره معامله لاسلیک کړئ انتقال() د شاليد څخه د بټوې شخصي کیلي سره.

دا طریقه لاندې ګټې لري:

  • دا ساده ده
  • له والټ څخه هاټ والټ ته د ټوکنونو لیږد لګښت د فنکشن زنګ وهلو لګښت سره مساوي دی انتقال()

په هرصورت، موږ دا طریقه پریښوده ځکه چې دا یو مهم نیمګړتیا لري: تاسو اړتیا لرئ چې شخصي کیلي چیرته ذخیره کړئ. او دا نه یوازې دا چې دوی له لاسه ورکول کیدی شي ، بلکه دا هم چې تاسو اړتیا لرئ دې کیلي ته لاسرسی په دقت سره اداره کړئ. که لږترلږه یو له دوی سره جوړجاړی وي، نو د یو ځانګړي کارونکي نښه به ګرم بټوه ته ونه رسیږي.

د ګمارلو دمخه د سمارټ قرارداد پته څنګه وټاکئ: د کریپټو تبادلې لپاره د CREATE2 کارول

د هر کارونکي لپاره جلا سمارټ قرارداد جوړ کړئ

د هر کارونکي لپاره د جلا سمارټ قرارداد ځای په ځای کول تاسو ته اجازه درکوي چې په سرور کې د والټونو څخه شخصي کیلي ذخیره نه کړئ. تبادله به دې سمارټ قرارداد ته زنګ ووهي ترڅو هټ والټ ته ټوکنونه انتقال کړي.

موږ دا حل هم پریښود ، ځکه چې کارونکي نشي کولی د سمارټ قرارداد پلي کولو پرته د هغه د بټوې پته ونه ښودل شي (دا واقعیا ممکنه ده ، مګر په پیچلي ډول د نورو زیانونو سره چې موږ به یې دلته بحث ونه کړو). په تبادله کې، کاروونکي کولی شي څومره حسابونه جوړ کړي څومره چې ورته اړتیا وي، او هرڅوک خپل بټوه ته اړتیا لري. دا پدې مانا ده چې موږ اړتیا لرو د تړون پلي کولو لپاره پیسې ولګوو پرته لدې چې ډاډ ترلاسه کړو چې کارونکي به دا حساب وکاروي.

Opcode CREATE2

د پخوانۍ میتود ستونزې حل کولو لپاره ، موږ پریکړه وکړه چې د CREATE2 اپکوډ وکاروو. CREATE2 تاسو ته اجازه درکوي مخکې له مخکې پته وټاکئ چیرې چې سمارټ قرارداد به ځای په ځای شي. پته د لاندې فورمول په کارولو سره محاسبه کیږي:

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


چیرته:

  • پته - د سمارټ قرارداد پته چې CREATE2 ته به زنګ ووهي
  • مالګه - تصادفي ارزښت
  • init_code - د ګمارنې لپاره سمارټ قرارداد بایټ کوډ

دا ډاډ ورکوي چې هغه پته چې موږ کارونکي ته ورکوو په حقیقت کې به مطلوب بایټکوډ ولري. همچنان ، دا سمارټ قرارداد هرکله چې موږ ورته اړتیا لرو له مینځه وړل کیدی شي. د مثال په توګه، کله چې یو کاروونکي پریکړه کوي چې د لومړي ځل لپاره خپل بټوه وکاروي.
د ګمارلو دمخه د سمارټ قرارداد پته څنګه وټاکئ: د کریپټو تبادلې لپاره د CREATE2 کارول
سربیره پردې ، تاسو کولی شئ د سمارټ قرارداد پته هر ځل د ذخیره کولو پرځای محاسبه کړئ ، ځکه چې:

  • پته په فورمول کې ثابت دی ځکه چې دا زموږ د والټ فابریکې پته ده
  • مالګه - user_id hash
  • init_code دایمي دی ځکه چې موږ ورته والټ کاروو

نور پرمختګونه

پخوانی حل لاهم یو نیمګړتیا لري: تاسو اړتیا لرئ د سمارټ قرارداد پلي کولو لپاره پیسې ورکړئ. په هرصورت، تاسو کولی شئ له دې څخه ځان خلاص کړئ. د دې لپاره تاسو کولی شئ فنکشن ته زنګ ووهئ انتقال()، او بیا ځان تباه کول() د والټ جوړونکي کې. او بیا به د سمارټ قرارداد پلي کولو لپاره ګاز بیرته راستانه شي.

د مشهور باور برعکس، تاسو کولی شئ یو سمارټ قرارداد د CREATE2 اپکوډ سره څو ځله ورته پته کې ځای په ځای کړئ. دا ځکه چې CREATE2 ګوري چې د هدف پته صفر ده (دا د جوړونکي په پیل کې "1" ارزښت ټاکل شوی). په ورته وخت کې، فعالیت ځان تباه کول() هر ځل بې ځایه پته بیا تنظیموي. په دې توګه، که تاسو د ورته دلیلونو سره بیا CREATE2 ته زنګ ووهئ، نو غیر چیک به تیر شي.

مهرباني وکړئ په یاد ولرئ چې دا حل د ایتیریم پتې حل سره ورته دی، مګر د شخصي کیلي ذخیره کولو اړتیا پرته. له والټ څخه هاټ والټ ته د پیسو لیږد لګښت نږدې د فنکشن زنګ وهلو لګښت سره مساوي دی انتقال()، ځکه چې موږ د سمارټ قرارداد پلي کولو لپاره پیسې نه ورکوو.

وروستۍ پریکړه

د ګمارلو دمخه د سمارټ قرارداد پته څنګه وټاکئ: د کریپټو تبادلې لپاره د CREATE2 کارول

په پیل کې چمتو شوي:

  • د مالګې د ترلاسه کولو لپاره فعالیت کارن نوم
  • سمارټ قرارداد چې د مناسب مالګې سره به د CREATE2 اپکوډ ته زنګ ووهي (د بیلګې په توګه د والټ فابریکه)
  • د والټ بایټکوډ د لاندې جوړونکي سره د تړون سره مطابقت لري:

constructor () {
    address hotWallet = 0x…;
    address token = 0x…;
    token.transfer (hotWallet, token.balanceOf (address (this)));
    selfdestruct (address (0));
}


د هر نوي کارونکي لپاره، موږ د هغه / هغې د بټوې پته د محاسبې له لارې ښکاره کوو

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


کله چې کاروونکي اړونده والټ پتې ته ټوکنونه لیږدوي، زموږ شالید د پیرامیټر سره د لیږد پیښه ګوري _تهد بټوې پته سره مساوي. پدې مرحله کې ، دا دمخه امکان لري چې د بټوې له مینځه وړلو دمخه په تبادله کې د کارونکي توازن زیات کړئ.

کله چې کافي ټوکنونه د والټ پته کې راټول شي، موږ کولی شو دا ټول په یوځل کې هاټ والټ ته انتقال کړو. د دې کولو لپاره، پس منظر د سمارټ قرارداد فابریکې فعالیت بولي، کوم چې لاندې کړنې ترسره کوي:

function deployWallet (соль uint256) {
    bytes memory walletBytecode =…;
    // invoke CREATE2 with wallet bytecode and salt
}


پدې توګه ، د والټ سمارټ قرارداد جوړونکی ویل کیږي ، کوم چې خپل ټول ټوکن د هوټ والټ پته ته لیږدوي او بیا ځان ویجاړوي.

بشپړ کوډ موندل کیدی شي دلته. مهرباني وکړئ په یاد ولرئ چې دا زموږ د تولید کوډ ندی ، ځکه چې موږ پریکړه وکړه چې د والټ بایټ کوډ اصلاح کړو او په اپکوډونو کې یې ولیکئ.

لیکوال Pavel Kondratenkov، د Ethereum متخصص

سرچینه: www.habr.com

Add a comment