ایٹم کی تبدیلیاں کیوں خراب ہیں اور چینلز ان کی مدد کیسے کریں گے، قسطنطنیہ کے ہارڈ فورک میں کیا اہم چیزیں ہوئیں اور جب آپ کے پاس گیس کی ادائیگی کے لیے کچھ نہ ہو تو کیا کریں۔
کسی بھی سیکورٹی ماہر کا بنیادی محرک ذمہ داری سے بچنے کی خواہش ہے۔
پروویڈنس مہربان تھا، میں نے پہلے ناقابل واپسی لین دین کا انتظار کیے بغیر ICO چھوڑ دیا، لیکن جلد ہی میں نے خود کو ایک کرپٹو ایکسچینج تیار کرتے پایا۔
میں یقینی طور پر مالش کبالچش نہیں ہوں، اور میرے لیے تمام چابیاں اور پاس ورڈز دینے کے لیے ایک سخت نظر کافی ہے۔ لہٰذا، ایک معمار کے طور پر میرا بنیادی مقصد یہ تھا کہ جہاں تک ممکن ہو کرپٹی اینالائسز کو میرے عزیز انفراسٹرکچر عناصر سے دور رکھا جائے۔
آپ کی چابیاں نہیں، آپ کے مسائل نہیں
ہم اثاثوں کے تبادلے کا نظام بنا رہے ہیں اور ان اثاثوں کے درمیانی ذخیرہ کو ختم کرنا چاہتے ہیں، لیکن ہمیں لین دین کی حفاظت کو یقینی بنانا چاہیے۔
آپ ایک متنازعہ صورت حال میں جج کے طور پر کام کر سکتے ہیں اور بٹوے کے ساتھ لین دین کر سکتے ہیں جس میں تین میں سے دو دستخطوں کی ضرورت ہوتی ہے: خریدار، بیچنے والا اور ایسکرو۔
تاہم، اگر شرکت کنندہ کامیابی سے ایسکرو پر حملہ کرتا ہے، تو اسے مطلوبہ دو دستخط ملتے ہیں۔
ایٹم سویپ ایک ایکسچینج اسکیم ہے جہاں گارنٹر ایک سمارٹ کنٹریکٹ ہے جو صرف ایماندارانہ رویے کی اجازت دیتا ہے۔
گویا بھیڑیے، بکری اور گوبھی کے بارے میں ایک پہیلی میں، آپ صرف صحیح منظر نامے کے مطابق ہی کام کر سکتے ہیں اور اگر آپ اس سے انحراف کرتے ہیں تو نقصان اٹھا سکتے ہیں۔
صرف پیٹ بھرے جانوروں کی بجائے، ہیش فنکشن کے ذریعے آرڈر فراہم کیا جاتا ہے جس میں تصادم تلاش کرنا اتنا مشکل ہوتا ہے کہ یہ شروع کرنے کے قابل نہیں ہے۔
پہلا مرحلہ: پہیلی
فرض کریں کہ ایلس ایک عمدہ صبح باب کو مٹھی بھر "کرپٹو یوآن" کے بدلے بٹ کوائن دینا چاہتی ہے۔
- وہ کچھ بڑا راز بناتی ہے۔
- اس سے ایک ہیش حاصل کرتا ہے۔
- بٹ کوائنز کو ایک سمارٹ کنٹریکٹ میں منتقل کرتا ہے، جس سے باب ایک راز پیش کرکے رقم نکال سکتا ہے (اس کی ہیش معاہدے میں بیان کردہ کے برابر ہونی چاہیے)
- اگر باب شام کو اپنے بٹ کوائنز کے لیے نہیں آتا ہے، تو ایلس انہیں واپس اپنے پاس لے جا سکتی ہے۔
دوسرا مرحلہ: بیت
باب کھیل میں آتا ہے اور "کرپٹو یورو" کو اپنے معاہدے میں منتقل کرتا ہے، جو اس طرح لکھا ہوا ہے کہ:
- ایلس ایک خفیہ نمبر پیش کرکے "کرپٹوئنز" لے سکتی ہے۔
- دوپہر کے کھانے سے پہلے نہیں، اگر ایلس حاضر ہونے میں ناکام ہو جاتی ہے تو باب ڈپازٹ واپس کر سکتا ہے۔
تیسرا مرحلہ: جواب بیت میں ہے۔
ایلس اپنے پیسوں کے لیے آتی ہے اور باب کے معاہدے سے رقم لیتی ہے، اس عمل میں اپنا راز افشا کرتی ہے۔
آخری مرحلہ: پہیلی حل ہو گئی ہے۔
باب لین دین کو دیکھتا ہے، اور اپنی عقابی آنکھ سے اس سے وہ راز نکالتا ہے جو ایلس نے معاہدے کے لیے پیش کیا تھا۔ وہ اس راز کو اپنے بٹ کوائنز واپس لینے کے لیے استعمال کرتا ہے۔
جب چیزیں غلط ہوجاتی ہیں۔
اگر ایلس اچانک فانی نکلی تو باب دوپہر کے کھانے پر اپنا یوآن لے جاتا ہے۔
بدلے میں، ایلس شام کو بٹ کوائن واپس کر دیتی ہے اگر غدار باب بہتر وقت تک رقم رکھنے کا فیصلہ کرتا ہے۔
اگر آپ متن پر تصویر کو ترجیح دیتے ہیں تو Habré کے پاس آپ کے لیے ایک زیادہ تفصیلی اور بصری تصویر ہے۔ .
ٹائم آؤٹ کے درمیان فرق ہمیں بدنیتی پر مبنی ایلس کے خلاف بیمہ کرنے کے لیے ڈیزائن کیا گیا ہے، جو باب کے پیسے بالکل آخری لمحے میں لیتا ہے، اور ٹائم آؤٹ ختم ہو جاتا ہے جب وہ کانپتی انگلیوں کے ساتھ لین دین میں ہیکس داخل کرتا ہے۔
شرکاء زیادہ سے زیادہ اپنے پیسے نہیں کھو سکتے، انہیں رقم کی واپسی کا انتظار کرنا پڑے گا۔
بلاکچین سپورٹیہ ایک سادہ اسکیم ہے جس کے لیے بلاکچینز کو بات چیت کرنے سے کسی بھی چیز کی ضرورت نہیں ہے۔
- کم از کم ایک برانچ کے ساتھ سمارٹ کنٹریکٹس کے لیے سپورٹ
- دونوں بلاکچینز کو ایک ہی ہیشنگ الگورتھم کو سپورٹ کرنا چاہیے (خفیہ لمبائی کی جانچ کرنا یاد رکھیں)
- ٹائم لاک۔
پہلی نظر میں، اسٹاک ایکسچینج کو "الوداع، ہماری ملاقات ایک غلطی تھی" کہنا پہلے سے ہی ممکن ہے، لیکن ایسا نہیں تھا۔
ان کے تمام فوائد کے لیے، جوہری تبادلہ حل ان کی لیکویڈیٹی سے متاثر نہیں ہوتے ہیں۔ زیادہ تر اس لیے کہ سب سے زیادہ مقبول BTC-USD جوڑی میں، فیاٹ حصہ مکمل طور پر ٹوکنائز نہیں تھا۔
USDT کی کامیابی نے ERC20 فارمیٹ میں ہر ذائقہ کے لیے مستحکم سکوں کی ایک پوری لہر کو جنم دیا ہے، انتہائی نگہداشت والے USDC سے لے کر انتہائی الگورتھم DAI تک۔
اس لیے، سادگی کے لیے، ہم مزید دلیل دیتے ہیں کہ ایلس باب بٹ کوائنز کو کچھ ERC20 ٹوکنز کے لیے فروخت کرتی ہے، اور ہمیں اسٹیبلائزرز کی قسمت کی امید ہے، کیونکہ ہمارے پاس ابھی بھی بہت سے تکنیکی مسائل ہیں۔
رفتار
Bitcoin اور Ethereum انفرادی طور پر بہت تیز نہیں ہیں، لیکن یہاں ہمیں پہلے تمام تصدیقات کے ساتھ ایک ڈپازٹ کا انتظار کرنا ہوگا، پھر دوسرے کے لیے۔
یہ سب اس لیے ہوتا ہے کہ اس راز کو جاننے والا پہلے رقم جمع کرتا ہے، اور مخالف حتمی ہونے کا انتظار کرتا ہے اور تب ہی اپنا حصہ منتقل کرتا ہے۔
اس کے علاوہ، ہم ایک بہت ہی غیر مستحکم اثاثے سے نمٹ رہے ہیں، اس لیے اس وقت کے دوران شرح کافی حد تک تبدیل ہو سکتی ہے، اور حالات کو بدلنا اب آسان نہیں رہا۔
رازداری
کوئی بھی تبادلہ دونوں بلاکچینز پر نمونے چھوڑ دیتا ہے۔ ایک دھیان رکھنے والا مبصر سمارٹ معاہدوں میں ان ہی ہیشز کو دیکھ سکتا ہے اور ایک منطقی نتیجہ اخذ کر سکتا ہے کہ ایک لین دین مکمل ہو گیا ہے، جس سے شرح مبادلہ سے لے کر ٹیکس تک بہت سارے نتائج اخذ کیے جا سکتے ہیں۔
جب اسٹاک ایکسچینج آپ کے معاملات کے بارے میں جانتا ہے، یہ انتہائی ناخوشگوار ہے؛
پریوست
عام طور پر بلاکچین کا مضبوط نقطہ اور خاص طور پر ایتھر۔ دیکھتے ہیں بیچنے والے اور خریدار کو کیا اشارے کرنا ہوں گے۔
بیچنے والے کے نقطہ نظر سے، سب کچھ نسبتاً آسان ہے: آپ کو صرف بٹ کوائن کو p2sh ایڈریس پر منتقل کرنے کی ضرورت ہے۔ آسمان کے ساتھ، سب کچھ بہت زیادہ مشکل ہے.
معاہدہآئیے ایک تبادلہ کے لئے گیتھب پر اوسطا معاہدہ دیکھیں:
contract iERC20 {
function totalSupply() public view returns (uint256);
function transfer(address receiver, uint numTokens) public returns (bool);
function balanceOf(address tokenOwner) public view returns (uint);
function approve(address delegate, uint numTokens) public returns (bool);
function allowance(address owner, address delegate) public view returns (uint);
function transferFrom(address owner, address buyer, uint numTokens) public returns (bool);
}
contract Swapper {
struct Swap {
iERC20 token;
bytes32 hash;
uint amount;
uint refundTime;
bytes32 secret;
}
mapping (address => mapping(address => Swap)) swaps;
function create(iERC20 token, bytes32 hash, address receiver, uint amount, uint refundTime) public {
require(swaps[msg.sender][receiver].amount == 0); // check is swap with given hash already exists
require(token.transferFrom(msg.sender, address(this), amount)); // transfer locked tokens to swap contract
swaps[msg.sender][receiver] = Swap(token, hash, amount, refundTime, 0x00); //create swap
}
function hashOf(bytes32 secret) public pure returns(bytes32) {
return sha256(abi.encodePacked(secret));
}
function withdraw(address owner, bytes32 secret) public {
Swap memory swap = swaps[owner][msg.sender];
require(swap.secret == bytes32(0));
require(swap.hash == sha256(abi.encodePacked(secret))); // swap exists
swaps[owner][msg.sender].secret = secret;
swap.token.transfer(msg.sender, swap.amount);
}
function refund(address receiver) public {
Swap memory swap = swaps[msg.sender][receiver];
require(now > swap.refundTime);
delete swaps[msg.sender][receiver];
swap.token.transfer(msg.sender, swap.amount);
}
}
ہوشیار! اس اور دیگر معاہدوں کو پروڈکشن میں آرٹیکل سے استعمال نہ کریں، وہ صرف نمائشی مقاصد کے لیے لکھے گئے ہیں۔ خاص طور پر یہ.
- باب کو ٹوکن کنٹریکٹ کے طریقہ کار کو کال کرنا چاہیے۔
approve, سویپ کنٹریکٹ کو اس کے ٹوکنز تک رسائی دینا - باب طریقہ استعمال کرتے ہوئے تبادلہ اور معاہدہ تخلیق کرتا ہے۔
transferFromآپ کے ایڈریس پر بھیجنے والے کے ٹوکن لے جاتا ہے۔ - ایلس ان
withdrawراز اور معاہدہ کالوں کو ظاہر کرتا ہے۔transfer
زیادہ تر بٹوے اور کرپٹو ایکسچینج تعاون نہیں کرتے ہیں۔ approve ٹوکنز، اور اچھی وجہ سے۔
صارفین خود اکثر غلطیاں کرتے ہیں اور صرف ٹوکن کو معاہدے میں منتقل کر دیتے ہیں، جس کے بعد ٹوکن آسانی سے ضائع ہو جاتے ہیں۔ Etherscan پر تبصرے بدقسمت لوگوں کے نوحہ سے بھرے ہوئے ہیں۔
اور کنٹریکٹ کو کال کرنے کے لیے، آپ کو ETH میں کمیشن ادا کرنا ہوگا، جس کا مطلب ہے کہ دونوں شرکاء کو لین دین شروع کرنے سے پہلے اس پر اسٹاک اپ کرنا ہوگا، اور بہت کم لوگ ایسا کرنا چاہتے ہیں۔
گیس ہولڈر
شروع کرنے کے لیے ایک اچھی جگہ یہ ہے کہ جہاں بھی ممکن ہو بھیجنے والے کے چیک کو ہٹا دیں اور فرض کریں کہ ہمارے پاس تمام آنے والوں کے لیے اضافی گیس کالنگ کے معاہدوں میں کوئی مبتلا ہے۔
اپ گریڈ شدہ معاہدہ
contract Swapper {
struct Swap {
iERC20 token;
address receiver;
uint amount;
address refundAddress;
uint refundTime;
}
mapping (bytes32 => Swap) swaps;
function create(iERC20 token, bytes32 hash, address receiver, uint amount, address refundAddress, uint refundTime) public {
require(swaps[hash].amount == 0); // use hash once
require(token.transferFrom(msg.sender, address(this), amount));
swaps[hash] = Swap(token, receiver, amount, refundAddress, refundTime);
}
function withdraw(bytes memory secret) public {
bytes32 hash = sha256(secret);
Swap memory swap = swaps[hash];
require(swap.amount > 0);
delete swaps[hash];
swap.token.transfer(swap.receiver, swap.amount);
}
function refund(bytes32 hash) public {
Swap memory swap = swaps[hash];
require(now > swap.refundTime);
delete swaps[hash];
swap.token.transfer(swap.refundAddress, swap.amount);
}
}
کنٹریکٹ کلید دوہری ازم اور EIP 712
جیسا کہ ہم جانتے ہیں، ہوا پر ایک ایڈریس ایک معاہدہ ہو سکتا ہے، یا یہ ایک موضوع ہو سکتا ہے، یعنی ایک کلید۔
کلید کا بنیادی کام کچھ پیغامات پر دستخط کرنا ہے۔
ہم Bob-contract کو بھیجنے والے کے طور پر استعمال کر سکتے ہیں، جو پہلے Bob-key کے دستخط کو چیک کرنے کے بعد تمام ضروری پاس بناتا ہے۔
اب، کوئی بھی شرکت کنندہ کے کمیشن کو سپانسر کر سکتا ہے، لیکن صرف وہی فیصلہ کرتا ہے جو کلید جانتا ہے۔
باب معاہدہ
library EIP712ProxyLibrary {
function hashCommand(address sender, iERC20 token, Swapper swapper, bytes32 hash, address receiver, uint amount, address refundAddress, uint refundTime) public view returns(bytes32);
}
contract ProxyBob {
address owner;
constructor(address _owner) public {
owner = _owner;
}
function createSwap(Swapper swapper, iERC20 token, bytes32 hash, address receiver, uint amount, address refundAddress, uint refundTime, uint8 v, bytes32 r, bytes32 s) public {
require(owner == ecrecover(EIP712ProxyLibrary.hashCommand(address(this), token, swapper, hash, receiver, amount, refundAddress, refundTime), v, r, s));
token.approve(address(swapper), amount);
swapper.create(token, hash, receiver, amount, refundAddress, refundTime);
}
}
Ethereum پیچیدہ ڈیٹا ڈھانچے کے دستخط کے ساتھ کام کرنے کے لئے ایک معیار ہے ، آپ اس کے بارے میں مزید پڑھ سکتے ہیں۔
تقسیم اور فتح۔
اکثر Ethereum معاہدے کو ہیک کرنے کا منظر نامہ اس طرح لگتا ہے:
- شریک کنٹریکٹ میں فنڈز جمع کرتا ہے۔
- پھر وہ فنڈز لیتا ہے۔
- کچھ غلط ہو رہا ہے۔
- حملہ آور بار بار پیسے لیتا ہے۔
اگر ہم اپنی پہلی مثال پر واپس جائیں تو کچھ غلط ہو جاتا ہے اگر پہیلی بائٹس کا خالی سیٹ ہے۔
ایک کروڑ کیسے چوری کرتے ہیں۔ہیش کے ساتھ تبادلہ بنائیں 0x66687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925
یہ sha256 سے ہے۔ 0x0000000000000000000000000000000000000000000000000000000000000000
ہم راز کو منتقل کرتے ہیں اور اپنے ٹوکن لیتے ہیں۔
ہم دوبارہ منتقل کرتے ہیں اور کسی اور کا لیتے ہیں، سب کی وجہ 0 = 0 ہے۔
ہر تجارت کے لیے علیحدہ معاہدہ بنا کر، ہم ای وی ایم کی سطح پر معاہدوں کو الگ کر سکتے ہیں۔
لیکن یہ سب کچھ نہیں ہے: اب ہر ٹرانزیکشن کا اپنا پتہ ہوتا ہے، جس پر آپ کسی بھی والیٹ یا ایکسچینج سے ٹوکن منتقل کر سکتے ہیں۔
ترک شدہ معاہدے اور تخلیق 2
لیکن اب، ہر لین دین کے لیے، ہمیں ایک معاہدہ بنانا ہوگا اور خریدار کا وہاں لیبر "کرپٹو فائنڈنگ" منتقل کرنے کا انتظار کرنا ہوگا۔ "صبح کے ٹھیکے، شام کو پیسے" اسکیم میں، ہمیشہ یہ خطرہ رہتا ہے کہ خریدار گر جائے گا، اور ایتھر معاہدہ بنانے میں پہلے ہی خرچ ہو چکا ہے۔
کیا یہ ممکن ہے کہ آپ کے پاس صبح کو پیسے ہوں اور شام کو بائٹس ہوں؟
قسطنطنیہ ہارڈ فورک میں ڈویلپرز Create2 انسٹرکشن کو شامل کیا، جو ایک نیا کنٹریکٹ بناتا ہے۔
keccak256( 0xff ++ address ++ salt ++ keccak256(init_code))[12:]
Где
- پتہ - فیکٹری کے معاہدے کا پتہ
- نمک - کچھ نمبر، جس کے معنی ہم اگلی سیریز میں سیکھیں گے۔
- init_code - معاہدہ بائیک کوڈ اور کنسٹرکٹر پیرامیٹرز۔
فیکٹریہدایت صرف اسمبلی کے ذریعے کام کرتی ہے، لہذا فیکٹری تھوڑی خوفناک لگتی ہے:
contract Factory {
event Deployed(address addr, uint256 salt);
function create2(bytes memory code, uint256 salt) public {
address addr;
assembly {
addr := create2(0, add(code, 0x20), mload(code), salt)
}
emit Deployed(addr, salt);
}
}
آپ کا معاہدہ کوڈ web3 کا استعمال کرتے ہوئے حاصل کیا جا سکتا ہے:
const MyContract = new web3.eth.Contract(ABI, {})
const сode = MyContract.deploy({
data: BYTECODE,
arguments: contructorArgs
}).encodeABI();
const factory = new web3.eth.Contract(FACTORY_ABI, factoryAddress);
tx = factory.methods.create2(сode, salt);
استحکام میں محدود حمایت کی وجہ سے، ایتھر کی کچھ باریکیوں کی وجہ سے معاہدے کے لیے گیس کا غلط حساب لگایا جا سکتا ہے۔
یہ خاص طور پر اچھا ہے کہ گیس کی قلت کی صورت میں، معاہدہ اندرونی خرابی کے ساتھ کریش ہو جاتا ہے، یہ بتائے بغیر کہ کافی گیس نہیں تھی، جیسا کہ آپ توقع کر سکتے ہیں۔
اب ہم ٹوکنز کو پہلے سے بنائے بغیر کنٹریکٹس میں منتقل کر سکتے ہیں، اور جب تک ہم انہیں نیٹ ورک پر شائع نہیں کرتے، کوئی بھی اندازہ نہیں لگائے گا کہ معاہدہ بالکل کیا کرتا ہے۔
کوا کوے کی آنکھ نہیں نکال سکتا
یہ واضح ہے کہ ایک حقیقی تجزیہ کار، خاص طور پر وہ شخص جس نے منی لانڈرنگ کے ذریعے حکومت کے دشمنوں کے خلاف جنگ میں اچھی سرمایہ کاری کی ہو، ایسی بچگانہ چالوں سے باز نہیں آئے گا، اور معاہدہ کرنے کے بعد بھی وہ ہیش ہی دیکھے گا۔
ہیش کو ظاہر ہونے سے کیسے روکا جائے؟
ہم سویپ کو خود آف چین میں منتقل کرتے ہیں: شرکا سویپ کنٹریکٹ میں منتقلی کے لیے دستخطوں کا تبادلہ کرتے ہیں، اور پھر راز نجی طور پر ظاہر ہوتا ہے۔
قدم بہ قدمدو "ملٹی سیگز" بنائے گئے ہیں جن سے اگر ایلس اور باب کے دستخط ہوں تو فنڈز نکالے جا سکتے ہیں۔
کسی بھی شرکاء کو آف لائن ہونے سے ایک المیہ بننے سے روکنے کے لیے، ہم ایک اچھا پرانا ٹائم آؤٹ شامل کریں گے۔
ایلس اور باب متوازی طور پر جمع کرتے ہیں۔
- ایلس ایک راز کا اندازہ لگاتی ہے اور باب کو راز کی ایک ہیش اور ایک ٹرانزیکشن دستخط دیتی ہے جو بٹ کوائنز کو سویپ ایڈریس پر منتقل کرتی ہے۔
- باب ایلس کو ایک چھپے ہوئے ہیش کے ساتھ سویپ کنٹریکٹ پر ٹوکن واپس لینے کے لیے ایک دستخط دیتا ہے۔
- ایلس باب کو ایک راز بتاتی ہے۔
اس وقت، ہم آہنگی آتی ہے: ایلس اور باب دونوں کسی بھی وقت ڈیل مکمل کر سکتے ہیں۔ ایسے دوستانہ ماحول میں، وہ حتمی پتوں پر رقم نکالنے کے لیے دستخطوں کا تبادلہ کر سکتے ہیں۔
ایک بیرونی مبصر کے لیے، ایسا لگتا ہے کہ رقم 2-میں سے 2 ملٹی سیگ معاہدے سے گزری ہے۔
یہ اسکیم دونوں فریقوں کو ایک ہی وقت میں رقم جمع کرانے کی بھی اجازت دیتی ہے، کیونکہ راز تمام تصدیق کے بعد ظاہر ہوتا ہے۔
سطح 2
چونکہ ہم ایک ایڈریس پر پیسے نکال سکتے ہیں اور انٹرمیڈیٹ ٹرانزیکشن شائع نہیں کر سکتے ہیں، اس لیے ہمیں کئی پتوں پر پیسے نکالنے اور لامحدود تعداد میں درمیانی لین دین کرنے سے کوئی چیز نہیں روکتی ہے۔ ایسا نہیں ہے کہ یہ تبادلے کے لیے ضروری سیٹ ہے، لیکن ایک بار جب آپ تبادلہ جمع کرنا شروع کر دیتے ہیں، تو اسے روکنا مشکل ہو جاتا ہے۔
اب ایلس اور باب اپنی پوری طاقت کے ساتھ گھوم سکیں گے۔ مثال کے طور پر، ساتوشی فی سیکنڈ کے تبادلے کے ذریعے خود بخود اوسط قیمت کا حساب لگائیں، یا صرف مارکیٹ بنانے والے اور لیکویڈیٹی وصول کنندہ سے براہ راست رابطہ کریں۔
قدم بہ قدم
- بیچنے والا ایک راز بناتا ہے اور خریدار کو راز کی ایک ہیش اور لین دین کے دستخط دیتا ہے جہاں فنڈز کا کچھ حصہ p2sh سویپ ایڈریس پر منتقل کیا جاتا ہے، اور باقی بیچنے والے کے پتے پر واپس کر دیا جاتا ہے۔
- خریدار ایک دستخط جمع کراتا ہے جس میں تبدیل شدہ ٹوکن اور تبدیلی وصول کنندہ کے پتے پر بھیجی جا سکتی ہے۔
- بیچنے والے نے راز کھول دیا۔
- تاریخ اپنے آپ کو ایک نئے راز کے ساتھ دہراتی ہے، اور ادل بدل اور تبدیلی کے علاوہ، خریدار کے پتے پر جو پہلے خریدی گئی تھی اور بیچنے والے کے پتے پر ادا کر دی گئی تھی اس کی واپسی بھی شامل کی جاتی ہے۔
اب ہمیں تیز رفتار p2p ٹریڈنگ تک رسائی حاصل ہے، اہم بات یہ ہے کہ وقت پر نظر رکھیں اور ڈیل کو ٹائم آؤٹ سے پہلے بند کر دیں۔
تاہم، اپنے معاہدوں کو تھوڑا سا موافقت کرکے، ہم اپنے چینلز کو امرت دے سکتے ہیں، جس سے ہمارے لیے نیٹ ورک بنانا بہت آسان ہو جائے گا۔
لیکن ہم اس پر اگلی قسط میں بات کریں گے۔
ماخذ: www.habr.com
