Shine agus truaighe suaip atamach

Carson a tha suaipean atamach dona agus mar a chuidicheas seanalan iad, dè na rudan cudromach a thachair ann am forc cruaidh Constantinople agus dè a nì thu nuair nach eil dad agad ri phàigheadh ​​​​airson gas.

Is e prÏomh bhrosnachadh eòlaiche tèarainteachd sam bith am miann uallach a sheachnadh.

Bha Providence tròcaireach, dh'fhàg mi an ICO gun a bhith a 'feitheamh ris a' chiad ghnothach nach gabh a thoirt air ais, ach cha b 'fhada gus an do lorg mi mi fhÏn a' leasachadh iomlaid crypto.

Chan e Malchish Kibalchish a th’ annam gu cinnteach, agus tha aon shealladh geur gu leòr airson na h-iuchraichean agus na faclan-faire gu lèir a thoirt seachad. Mar sin, b’ e mo phrìomh amas mar ailtire an gath dearg de cryptanalysis a chuir cho fada ‘s a ghabhas bho na h-eileamaidean bun-structair a bha dèidheil orm.

Chan e na h-iuchraichean agad, chan e na duilgheadasan agad

Tha sinn a’ togail siostam iomlaid so-mhaoin agus tha sinn airson cuir às do stòradh eadar-mheadhanach de na maoinean sin, ach feumaidh sinn dèanamh cinnteach à tèarainteachd a’ ghnothaich.

Faodaidh tu a bhith nad bhritheamh ann an suidheachadh connspaideach agus gnothaichean a dhèanamh le wallets a dh’ fheumas dhà de thrì ainmean-sgrìobhte: ceannaiche, neach-reic agus escrow.

Ach, ma bheir an com-pĂ irtiche ionnsaigh air an escrow gu soirbheachail, gheibh e an dĂ  ainm-sgrĂŹobhte a tha a dhĂŹth.

Is e sgeama iomlaid a th’ ann an suaip atamach far a bheil an neach-urrais na chùmhnant snasail a leigeas le giùlan onarach a-mhàin.

Mar gum biodh tu ann an tòimhseachan mu mhadadh-allaidh, gobhar agus càl, chan urrainn dhut ach a bhith ag obair a rèir an aon suidheachadh ceart agus a ’fulang call ma dh’ fhalbhas tu bhuaithe.

Is ann dÏreach an àite beathaichean borb, tha òrdugh air a thoirt seachad le gnÏomh hash anns a bheil e cho duilich tubaist a lorg nach fhiach tòiseachadh.

Ceum a h-aon: tòimhseachan

Osbarr gu bheil Alice aon mhadainn mhath ag iarraidh bitcoin a thoirt dha Bob airson dòrlach de “crypto-yuan”.

  • Tha i a’ dèanamh dĂŹomhaireachd mòr
  • A’ faighinn hash bhuaithe
  • A 'gluasad bitcoins gu cĂšmhnant snasail, Ă s an urrainn dha Bob airgead a tharraing air ais le bhith a' taisbeanadh dĂŹomhaireachd (feumaidh an hash dheth a bhith co-ionnan ris an fheadhainn a tha air a shònrachadh sa chĂšmhnant)
  • Mura nochd Bob airson na bitcoins aige san fheasgar, faodaidh Alice an toirt air ais thuice fhèin.

Ceum a dhĂ : biathadh

Bidh Bob a’ tighinn a-steach agus a’ gluasad “crypto-euro” chun chùmhnant aige, a tha sgrìobhte ann an dòigh a tha:

  • Faodaidh Alice “crypto-yens” a thoirt air falbh le bhith a’ taisbeanadh Ă ireamh dhĂŹomhair
  • Gun a bhith nas trĂ ithe na lòn, faodaidh Bob an tasgadh a thilleadh mura h-eil Alice a 'nochdadh.

Ceum a trĂŹ: tha am freagairt anns a 'bhiadhadh

Bidh Alice a 'tighinn airson a cuid airgid agus a' toirt an airgid bho chÚmhnant Bob, a 'nochdadh a dÏomhaireachd sa phròiseas.

Ceum mu dheireadh: tha an tòimhseachan air fhuasgladh

Tha Bob a’ faicinn a’ ghnothaich, agus le a shùil iolaire tha e a’ toirt a-mach às an dìomhaireachd a thug Alice don chùmhnant. Bidh e a 'cleachdadh an dìomhair seo gus na bitcoins aige a thoirt air ais.

Nuair a thèid cÚisean ceàrr

Ma thionndaidheas Alice gu h-obann gu bhith marbhtach, bheir Bob a yuan aig lòn.

Aig an aon Ă m, bidh Alice a 'tilleadh am bitcoin san fheasgar ma cho-dhĂšineas Bob cealgach an t-airgead a chumail gu amannan nas fheĂ rr.

Mas fheàrr leat dealbh na teacsa, tha fear nas mionaidiche agus nas lèirsinneach aig HabrÊ dhut. mÏneachadh air mar a tha suaipean atamach ag obair.

Tha an eadar-dhealachadh eadar amannan-ama air a dhealbhadh gus àrachas a thoirt dhuinn an-aghaidh Alice droch-rùnach, a bheir airgead Bob aig a’ mhionaid mu dheireadh, agus thig an ùine-ama gu crìch fhad ‘s a thèid e a-steach don heics anns a’ ghnothach le corragan crith.

Chan urrainn do chom-pàirtichean an airgead aca a chall; aig a’ char as motha, feumaidh iad feitheamh ri ath-dhìoladh.

Taic BlockchainIs e sgeama sĂŹmplidh a tha seo nach fheum dad idir bho bhith ag eadar-obrachadh blockchains:

  • Taic airson cĂšmhnantan snasail le co-dhiĂš aon mheur
  • Feumaidh an dĂ  blockchain taic a thoirt do na h-aon algoirmean hashing (cuimhnich gun dèan thu sgrĂšdadh air an fhad dĂŹomhair)
  • Glasan-ama.

Aig a 'chiad sealladh, tha e comasach mar-thĂ  a rĂ dh ris an t-iomlaid stoc "beannachd, b' e mearachd a bh 'anns a' choinneamh againn," ach cha robh sin fĂŹor.

Airson na buannachdan aca uile, chan eil fuasglaidhean suaip atamach a’ toirt buaidh air an leachtachd aca. Gu ìre mhòr air sgàth anns a ’phaidhir BTC-USD as mòr-chòrdte, cha robh am pàirt fiat làn chomharran.
Tha soirbheachas USDT air leantainn gu tonn slĂ n de bhuinn sheasmhach ann an cruth ERC20 airson a h-uile blas, bhon USDC as seasmhaiche chun an DAI as algorithmic.

Mar sin, airson sÏmplidh, tha sinn ag argamaid gu bheil Alice a 'reic Bob bitcoins airson cuid de chomharran ERC20, agus tha sinn an dòchas gum bi an luchd-stàbaill fortanach, oir tha mòran dhuilgheadasan teicnigeach againn fhathast.

Astar

Chan eil Bitcoin agus Ethereum gu math luath leotha fhèin, ach an seo feumaidh sinn feitheamh an toiseach airson aon tasgadh leis a h-uile dearbhadh, an uairsin airson an dàrna fear.

Tha seo uile air sgàth gu bheil an com-pàirtiche aig a bheil eòlas air an dìomhair an-toiseach a ’tasgadh an airgid, agus bidh an neach-dùbhlain a’ feitheamh ris a ’cheann thall agus dìreach an uairsin a’ gluasad a phàirt.

A bharrachd air an sin, tha sinn a’ dèiligeadh ri so-mhaoin gu math luaineach, agus mar sin rè na h-ùine seo faodaidh an ìre atharrachadh gu mòr, agus chan eil e furasta na suidheachaidhean atharrachadh tuilleadh.

DĂŹomhaireachd

Bidh iomlaid sam bith a’ fàgail artifacts air an dà blockchain. Faodaidh neach-amhairc furachail mothachadh a dhèanamh air na h-aon hashes ann an cùmhnantan snasail agus co-dhùnadh loidsigeach a dhèanamh gu bheil gnothach air a chrìochnachadh, às an urrainnear mòran cho-dhùnaidhean a tharraing bho ìre iomlaid gu cìs.

Nuair a tha fios aig an t-iomlaid stoc mu do ghnothaichean, tha e air leth mĂŹ-thlachdmhor; nuair a tha fios aig a h-uile duine mu dheidhinn, tha e dĂ  uair mĂŹ-thlachdmhor.

Cleachdalachd

Puing làidir blockchain san fharsaingeachd agus ether gu sònraichte. Feuch sinn a-mach dè na gluasadan a dh'fheumas an neach-reic agus an ceannaiche a dhèanamh.

Bho shealladh an neach-reic, tha a h-uile dad an Ïre mhath sÏmplidh: feumaidh tu dÏreach Bitcoin a ghluasad gu seòladh p2sh. Le ether, tha a h-uile dad tòrr nas duilghe.

CùmhnantBheir sinn sùil air a’ chùmhnant cuibheasach thairis air Github airson suaip:

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);
    }
}

Thoir aire! Na cleachd seo agus cÚmhnantan eile bhon artaigil ann an riochdachadh, tha iad sgrÏobhte airson adhbharan taisbeanaidh a-mhàin. Gu sònraichte am fear seo.

  • Feumaidh Bob modh cĂšmhnant nan comharran a ghairm approve, a’ toirt cothrom don chĂšmhnant suaip air na comharran aige
  • Bidh Bob a’ cruthachadh an suaip agus cĂšmhnant a’ cleachdadh an dòigh transferFrom bheir e comharran an neach a chuir chun t-seòladh agad
  • Alice ann withdraw a’ nochdadh an dĂŹomhair agus na gairmean cĂšmhnant transfer

Chan eil a’ mhòr-chuid de wallets agus iomlaidean crypto a’ toirt taic approve comharran, agus air adhbhar math.

Bidh luchd-cleachdaidh iad fhèin gu tric a 'dèanamh mhearachdan agus dÏreach a' gluasad comharran chun a 'chÚmhnant, agus às dèidh sin tha na comharran dÏreach air an call. Tha na beachdan air Etherscan làn de caoidh bhon fheadhainn mÏ-fhortanach.

Agus gus cùmhnant a ghairm, feumaidh tu coimisean a phàigheadh ​​​​ann an ETH, a tha a ’ciallachadh gum feum an dà chom-pàirtiche stoc a chuir air mus tòisich iad air a’ ghnothach, agus chan eil mòran dhaoine airson seo a dhèanamh.

Neach-gleidhidh gas

Is e deagh àite tòiseachaidh a bhith a’ toirt air falbh an t-seic neach-cuiridh far an gabh sin dèanamh agus gabhail ris gu bheil cuideigin againn a tha a’ fulang le cus cùmhnantan gairm gas airson a h-uile neach a thig a-steach.

CĂšmhnant air Ăšrachadh

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);
    }
}

Dualism prĂŹomh chĂšmhnant agus EIP 712

Mar a tha fios againn, faodaidh seòladh air an èadhar a bhith na chÚmhnant, no faodaidh e a bhith na chuspair, is e sin, iuchair.
Is e prĂŹomh obair na h-iuchrach cuid de theachdaireachdan a shoidhnigeadh.

Faodaidh sinn an cĂšmhnant Bob a chleachdadh mar neach-cuiridh, a nĂŹ a h-uile pas riatanach, Ă s deidh dhuinn ainm-sgrĂŹobhte Bob-key a sgrĂšdadh an-toiseach.

A-nis, faodaidh duine sam bith taic a thoirt do choimisean com-pĂ irtiche, ach is e dĂŹreach an neach aig a bheil fios an iuchair a nĂŹ an co-dhĂšnadh.

Bob-cĂšmhnant

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);
    }
}

Tha inbhe aig Ethereum airson a bhith ag obair le ainmean-sgrĂŹobhte de structaran dĂ ta iom-fhillte EP 712, faodaidh tu barrachd a leughadh mu dheidhinn ann an Blog wallet metamask

Roinn agus ceannsachadh

Gu math tric tha an suidheachadh airson a bhith a 'slaodadh cĂšmhnant Ethereum a' coimhead mar seo:

  • Bidh an com-pĂ irtiche a’ tasgadh airgead a-steach don chĂšmhnant
  • An uair sin tha e a 'gabhail an t-airgead
  • Tha rudeigin a’ dol ceĂ rr
  • Bidh an neach-ionnsaigh a’ toirt an airgid a-rithist is a-rithist

Ma thèid sinn air ais chun chiad eisimpleir againn, thèid rudeigin ceàrr ma tha an tòimhseachan na sheata de bytes falamh.

Ciamar a goid milleanCruthaich suaip le hash 0x66687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925
Is e seo sha256 bho 0x0000000000000000000000000000000000000000000000000000000000000000
Bidh sinn a 'gluasad an dĂŹomhair agus a' gabhail ar comharran
Bidh sinn a’ tar-chuir a-rithist agus a’ toirt feadhainn cuideigin eile, uile air sgàth 0 = 0

Le bhith a’ cruthachadh cùmhnant air leth airson gach malairt, is urrainn dhuinn cùmhnantan a sgaradh aig ìre EVM.

Ach chan e sin a h-uile càil: a-nis tha a sheòladh fhèin aig gach gnothach, gus an urrainn dhut comharran a ghluasad bho wallet no iomlaid sam bith.

CÚmhnantan air an trèigsinn agus a chruthachadh2

Ach a-nis airson gach gnothach feumaidh sinn cùmhnant a chruthachadh agus feitheamh ris a ’cheannaiche saothair“ lorg crypto” a ghluasad an sin. Anns an sgeama “cùmhnantan sa mhadainn, airgead san fheasgar”, tha an-còmhnaidh cunnart ann gun tuit an ceannaiche dheth, agus chaidh an ether a chosg mu thràth air cruthachadh a’ chùmhnant.

A bheil e comasach a dhèanamh gus am bi airgead agad sa mhadainn agus bytes san fheasgar?

Luchd-leasachaidh ann am forc cruaidh Constantinople EP 1014 chuir e ris an stiÚireadh create2, a chruthaicheas cÚmhnant Úr aig seòladh cinntiche

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

CĂ ite

  • seòladh - seòladh cĂšmhnant factaraidh
  • salann - cuid Ă ireamh, a 'ciallachadh a bhios sinn ag ionnsachadh anns an ath shreath
  • init_code - cĂšmhnant bytecode agus crĂŹochan neach-togail.

An fhactaraidhChan obraich an stiĂšireadh ach tro cho-chruinneachadh, agus mar sin tha coltas beagan eagallach air an fhactaraidh:

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);
  }
}

Gheibhear an còd cùmhnant agad le bhith a’ cleachdadh 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);

Air sgàth taic cuibhrichte ann an solidity, dh’ fhaodadh gas airson cùmhnant a bhith air a thomhas gu ceàrr air sgàth beagan subtleties den ether.

Tha e gu sònraichte math ma bhios gainnead gas ann, gun tuit an cÚmhnant le mearachd a-staigh, gun a bhith ag aithris nach robh gas gu leòr ann, mar a bhiodh dÚil agad.

A-nis is urrainn dhuinn comharran a ghluasad gu cùmhnantan gun a bhith gan cruthachadh ro-làimh, agus gus am foillsich sinn iad air an lìonra, cha bhith duine a’ tomhas dè dìreach a bhios an cùmhnant a ’dèanamh.

Cha spĂŹon fitheach sĂšil feannag

Tha e soilleir nach tèid stad a chuir air fìor mhion-sgrùdair, gu sònraichte fear a fhuair deagh thasgaidhean anns an t-sabaid an aghaidh nàimhdean an rèim le airgead a ’glaodhadh, le cleasan leanabhach mar sin, agus às deidh dha a’ chùmhnant a chruthachadh chì e fhathast an hash.

Ciamar a chuireas tu casg air an hash bho bhith air a thaisbeanadh?

Bidh sinn a’ gluasad an suaip fhèin chun offchain: bidh com-pàirtichean ag iomlaid ainmean-sgrìobhte airson gluasad gu cùmhnant suaip, agus an uairsin thèid an dìomhaireachd fhoillseachadh gu prìobhaideach.

Ceum air cheumTha dà “multisigs” air an cruthachadh às an urrainnear airgead a tharraing air ais ma tha ainmean-sgrìobhte aig Alice agus Bob.

Gus casg a chuir air gin de na com-pàirtichean bho bhith a’ dol far-loidhne gu bhith na bhròn-chluich, cuiridh sinn seann ùine seachad.

Bidh Alice agus Bob a 'dèanamh tasgaidhean ann an co-shÏnte

  • Bidh Alice a’ tomhas dĂŹomhaireachd agus a’ toirt hash den dĂŹomhaireachd dha Bob agus ainm-sgrĂŹobhte malairt a ghluaiseas na bitcoins chun t-seòladh suaip.
  • Bheir Bob ainm-sgrĂŹobhte do Alice gus comharran a tharraing air ais gu cĂšmhnant suaip le hash falaichte.
  • Tha Alice ag innse dĂŹomhaireachd dha Bob.

Aig an àm seo, thig co-sheirm: faodaidh an dà chuid Alice agus Bob an aonta a chrÏochnachadh aig àm sam bith. Ann an àrainneachd cho càirdeil, faodaidh iad ainmean-sgrÏobhte iomlaid gus airgead a tharraing air ais gu na seòlaidhean deireannach.

Do neach-amhairc bhon taobh a-muigh, tha e coltach gun deach an t-airgead tro chĂšmhnant multisig 2-of-2.

Tha an sgeama seo cuideachd a’ leigeil leis an dà phàrtaidh tasgadh a dhèanamh aig an aon àm, leis gu bheil an dìomhaireachd air fhoillseachadh às deidh a h-uile dearbhadh.

ĂŹre 2

Leis gun urrainn dhuinn airgead a tharraing air ais gu aon seòladh agus gun a bhith a 'foillseachadh malairt eadar-mheadhanach, chan eil dad a' cur bacadh oirnn bho bhith a 'tarraing airgead gu grunn sheòlaidhean agus a' dèanamh àireamh neo-chuingealaichte de ghnothaichean eadar-mheadhanach. Chan e gur e seata riatanach a tha seo airson iomlaid, ach aon uair ‘s gun tòisich thu a’ cruinneachadh suaip, tha e duilich stad.

A-nis bidh e comasach dha Alice agus Bob tionndadh mun cuairt le an neart. Mar eisimpleir, gu fèin-obrachail obrachadh a-mach a 'phrÏs chuibheasach le bhith ag iomlaid satoshi gach diog, no dÏreach a' ceangal gu dÏreach an neach-dèanamh a 'mhargaidh agus an neach-faighinn leachtachd.

Ceum air cheum

  • Bidh an neach-reic a’ dèanamh dĂŹomhaireachd agus a’ toirt hash den dĂŹomhaireachd don cheannaiche agus ainm-sgrĂŹobhte malairt far a bheil pĂ irt den airgead air a ghluasad gu seòladh suaip p2sh, agus an còrr air a thilleadh gu seòladh an neach-reic.
  • Bidh an ceannaiche a’ cur a-steach ainm-sgrĂŹobhte a leigeas leis na comharran suaip agus atharrachadh a chuir gu seòladh an neach a gheibh e.
  • Bidh an neach-reic a’ nochdadh an dĂŹomhaireachd
  • Bidh eachdraidh ag ath-aithris le dĂŹomhaireachd Ăšr, agus a bharrachd air an iomlaid agus an atharrachadh, thathas a’ cur ris na chaidh a cheannach roimhe gu seòladh a ’cheannaiche agus a chaidh a phĂ igheadh ​​​​mar-thĂ  gu seòladh an neach-reic.

A-nis gu bheil cothrom againn air malairt p2p aig astar luath, is e am prĂŹomh rud sĂšil a chumail air an Ăšine agus an aonta a dhĂšnadh ron Ă m a-muigh.

Ach, le bhith a’ tweaking ar cùmhnantan beagan, is urrainn dhuinn neo-bhàsmhorachd a thoirt dha na seanailean againn, a nì e fada nas fhasa dhuinn lìonra a thogail.

Ach bruidhnidh sinn mu dheidhinn seo anns an ath phrògram.

Source: www.habr.com

Ceannaich aoigheachd earbsach airson làraich le dìon DDoS, frithealaichean VPS VDS 🔥 Ceannaich aoigheachd làrach-lìn earbsach le dìon DDoS, frithealaichean VPS VDS | ProHoster