Vim li cas atomic swaps tsis zoo thiab yuav ua li cas cov channel yuav pab tau lawv, dab tsi tseem ceeb tshwm sim hauv Constantinople nyuaj diav rawg thiab yuav ua li cas thaum koj tsis muaj dab tsi them rau roj.
Lub hom phiaj tseem ceeb ntawm txhua tus kws kho mob tshwj xeeb yog kev xav kom tsis txhob muaj lub luag haujlwm.
Providence muaj kev hlub tshua, Kuv tau tawm ntawm ICO yam tsis tau tos thawj qhov kev hloov pauv tsis tau, tab sis tsis ntev pom kuv tus kheej txhim kho crypto pauv.
Kuv yeej tsis yog Malchish Kibalchish, thiab ib qho zoo saib yog txaus rau kuv xa tag nrho cov yuam sij thiab passwords. Yog li ntawd, kuv lub hom phiaj tseem ceeb ua tus kws tsim vaj tsev yog tso lub pob liab-kub ntawm cryptanalysis kom deb li deb tau los ntawm cov chaw tsim kho vaj tse nyob rau kuv.
Tsis yog koj cov yuam sij, tsis yog koj cov teeb meem
Peb tab tom tsim kev sib pauv khoom vaj khoom tsev thiab xav tshem tawm qhov nruab nrab cia ntawm cov cuab tam no, tab sis peb yuav tsum ua kom muaj kev ruaj ntseg ntawm kev sib pauv.
Koj tuaj yeem ua tus kws txiav txim plaub ntug hauv qhov teeb meem tsis sib haum xeeb thiab ua kev lag luam nrog lub hnab nyiaj uas yuav tsum muaj ob ntawm peb qhov kev kos npe: tus yuav, tus muag khoom thiab escrow.
Txawm li cas los xij, yog tias tus neeg koom nrog ua tiav kev tawm tsam ntawm escrow, ces nws tau txais ob qhov kos npe yuav tsum tau ua.
Atomic swap yog ib qho kev pauv pauv uas tus lav yog daim ntawv cog lus ntse uas tso cai rau tus cwj pwm ncaj ncees xwb.
Raws li yog hais tias nyob rau hauv ib tug riddle txog ib tug hma, ib tug tshis thiab ib tug cabbage, koj muaj peev xwm tsuas ua raws li qhov tseeb scenario thiab raug kev txom nyem yog tias koj deviate los ntawm nws.
Tsuas yog es tsis txhob ntawm cov tsiaj voracious, kev txiav txim yog muab los ntawm ib tug hash muaj nuj nqi nyob rau hauv uas nws yog heev nyuaj mus nrhiav kev sib tsoo uas nws tsis tsim nyog pib.
Kauj ruam XNUMX: riddle
Piv txwv tias Alice ib tag hmo zoo xav muab Bob rau ib tug bitcoin rau ib tug puv tes ntawm "crypto-yuan".
- Nws tab tom ua qee qhov zais cia loj
- Tau txais ib qho hash los ntawm nws
- Hloov bitcoins mus rau daim ntawv cog lus ntse, los ntawm qhov uas Bob tuaj yeem thim nyiaj los ntawm kev nthuav qhia qhov zais cia (qhov hash ntawm nws yuav tsum sib npaug li qhov tau teev tseg hauv daim ntawv cog lus)
- Yog tias Bob tsis tshwm sim rau nws cov bitcoins yav tsaus ntuj, Alice tuaj yeem coj lawv rov qab rau nws tus kheej.
Kauj ruam XNUMX: kab
Bob los rau hauv kev ua si thiab hloov "crypto-euro" rau nws daim ntawv cog lus, uas tau sau nyob rau hauv xws li:
- Alice tuaj yeem tshem tawm "crypto-yens" los ntawm kev nthuav qhia tus lej zais
- Tsis ua ntej noj su, Bob tuaj yeem xa rov qab cov nyiaj tso nyiaj yog tias Alice tsis tshwm sim.
Kauj Ruam XNUMX: Cov lus teb yog nyob rau hauv qhov cub
Alice los rau nws cov nyiaj thiab siv nyiaj los ntawm Bob daim ntawv cog lus, qhia nws qhov zais cia hauv cov txheej txheem.
Cov kauj ruam kawg: qhov riddle tau daws
Bob pom qhov kev sib pauv, thiab nrog nws lub qhov muag dav dawb hau nws rho tawm los ntawm nws qhov zais cia uas Alice nthuav tawm rau daim ntawv cog lus. Nws siv qhov tsis pub leejtwg paub los thim rov qab nws cov bitcoins.
Thaum tej yam mus tsis ncaj ncees lawm
Yog tias Alice dheev dhau los ua neeg tuag, Bob siv nws yuan ntawm pluas su.
Nyob rau hauv lem, Alice rov qab cov bitcoin nyob rau yav tsaus ntuj yog hais tias tus treacherous Bob txiav txim siab tuav cov nyiaj kom txog thaum lub sij hawm zoo.
Yog tias koj xav tau daim duab rau cov ntawv nyeem, Habre muaj cov ncauj lus kom ntxaws thiab pom rau koj. .
Qhov sib txawv ntawm lub sij hawm tawm yog tsim los ua pov thawj peb tawm tsam Alice siab phem, leej twg siv Bob cov nyiaj thaum lub sijhawm kawg, thiab lub sijhawm dhau mus thaum nws nkag mus rau hex rau hauv kev sib pauv nrog ntiv tes tshee.
Cov neeg koom tsis tuaj yeem poob lawv cov nyiaj; feem ntau, lawv yuav tau tos kom tau nyiaj rov qab.
Kev them nyiaj yug BlockchainQhov no yog ib txoj kev yooj yim uas yuav tsum tsis muaj dab tsi los ntawm kev cuam tshuam nrog blockchains:
- Kev them nyiaj yug rau cov ntawv cog lus ntse nrog tsawg kawg ib ceg
- Ob leeg blockchains yuav tsum txhawb tib lub hashing algorithms (nco ntsoov xyuas qhov ntev tsis pub leejtwg paub)
- Timelocks.
Thaum xub thawj siab ib muag, nws twb tau hais rau lub Tshuag pauv "nyob zoo, peb lub rooj sib tham yog yuam kev," tab sis qhov ntawd tsis yog li ntawd.
Rau tag nrho lawv cov txiaj ntsig, atomic swap kev daws teeb meem tsis txaus siab rau lawv cov peev txheej. Feem ntau vim hais tias nyob rau hauv cov nyiam tshaj plaws BTC-USD khub, fiat ib feem tsis tau tag nrho tokenized.
Qhov kev vam meej ntawm USDT tau ua rau tag nrho nthwv dej ntawm cov nyiaj npib ruaj khov hauv ERC20 hom ntawv rau txhua tus saj, los ntawm kev saib xyuas feem ntau USDC mus rau feem ntau algorithmic DAI.
Yog li ntawd, rau qhov yooj yim, peb tau sib cav ntxiv tias Alice muag Bob bitcoins rau qee qhov ERC20 tokens, thiab peb cia siab tias yuav muaj hmoo ntawm cov stabilizers, vim peb tseem muaj ntau yam teeb meem ntxiv.
Ceev
Bitcoin thiab Ethereum tsis nrawm heev ntawm tus kheej, tab sis ntawm no peb yuav tsum tau tos ua ntej rau ib qho kev tso nyiaj nrog txhua qhov kev lees paub, tom qab ntawd rau qhov thib ob.
Qhov no yog tag nrho vim hais tias tus neeg koom uas paub qhov zais cia thawj zaug tso nyiaj, thiab tus neeg sib tw tos rau qhov kawg thiab tsuas yog tom qab ntawd hloov nws txoj haujlwm.
Tsis tas li ntawd, peb tab tom cuam tshuam nrog cov cuab yeej cuab tam tsis hloov pauv, yog li lub sijhawm no tus nqi tuaj yeem hloov pauv tau zoo heev, thiab hloov cov xwm txheej tsis yooj yim dua.
Kev zais siab
Ib qho kev sib pauv tawm cov khoom cuav ntawm ob qho tib si blockchains. Tus neeg saib xyuas tuaj yeem pom zoo tib yam hashes hauv cov ntawv cog lus ntse thiab ua qhov kev txiav txim siab tias qhov kev sib pauv tau ua tiav, los ntawm ntau qhov kev txiav txim siab tuaj yeem rub tawm ntawm tus nqi pauv mus rau se.
Thaum kev sib pauv khoom lag luam paub txog koj cov xwm txheej, nws tsis txaus siab heev; thaum txhua tus paub txog nws, nws yog ob npaug tsis txaus siab.
Kev siv tau
Lub ntsiab lus muaj zog ntawm blockchain feem ntau thiab ether tshwj xeeb. Cia peb pom dab tsi gestures tus neeg muag khoom thiab tus neeg yuav khoom yuav tau ua.
Los ntawm tus neeg muag khoom qhov kev xav, txhua yam yog qhov yooj yim: koj tsuas yog xav tau hloov Bitcoin mus rau qhov chaw nyob p2sh. Nrog ether, txhua yam yog qhov nyuaj dua.
daim ntawv cog lusCia peb saib daim ntawv cog lus nruab nrab ntawm Github rau kev sib pauv:
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);
}
}
Ceev faj Tsis txhob siv qhov no thiab lwm cov ntawv cog lus los ntawm tsab xov xwm hauv kev tsim khoom, lawv tau sau rau kev ua qauv qhia nkaus xwb. Tshwj xeeb yog qhov no.
- Bob yuav tsum hu rau daim ntawv cog lus token txoj kev
approve, muab daim ntawv cog lus swap nkag mus rau nws cov tokens - Bob tsim qhov sib pauv thiab cog lus siv txoj kev
transferFromcoj tus xa tus tokens rau koj qhov chaw nyob - Alice hauv
withdrawqhia qhov zais cia thiab daim ntawv cog lus hutransfer
Feem ntau cov hnab nyiaj thiab crypto pauv tsis txhawb nqa approve tokens, thiab yog vim li cas.
Cov neeg siv lawv tus kheej feem ntau ua yuam kev thiab tsuas yog hloov cov tokens rau daim ntawv cog lus, tom qab ntawd cov tokens tsuas yog poob. Cov lus hais ntawm Etherscan yog tag nrho ntawm kev quaj ntsuag los ntawm qhov tsis muaj hmoo.
Thiab txhawm rau hu rau daim ntawv cog lus, koj yuav tsum them nyiaj hauv ETH, uas txhais tau hais tias ob tus neeg koom yuav tsum tau npaj rau nws ua ntej pib qhov kev sib pauv, thiab ob peb tus neeg xav ua qhov no.
Gas tuav
Ib qho chaw zoo pib yog tshem tawm cov neeg xa ntawv mus rau qhov twg los tau thiab xav tias peb muaj ib tus neeg raug kev txom nyem los ntawm kev sib cog lus roj ntau rau txhua tus neeg tuaj.
Hloov kho daim ntawv cog lus
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);
}
}
Daim ntawv cog lus-qhov tseem ceeb dualism thiab EIP 712
Raws li peb paub, qhov chaw nyob saum huab cua tuaj yeem yog daim ntawv cog lus, lossis nws tuaj yeem yog ib qho kev kawm, uas yog, qhov tseem ceeb.
Lub luag haujlwm tseem ceeb yog kos npe rau qee cov lus.
Peb tuaj yeem siv Bob-daim ntawv cog lus raws li tus neeg xa khoom, uas ua rau txhua qhov tsim nyog dhau los, tau kuaj thawj zaug kos npe ntawm Bob-key.
Tam sim no, leej twg tuaj yeem txhawb nqa tus neeg koom nrog pawg thawj coj, tab sis tsuas yog tus uas paub tus yuam sij ua qhov kev txiav txim siab.
Bob-kev cog lus
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 muaj tus qauv rau kev ua haujlwm nrog kos npe ntawm cov ntaub ntawv nyuaj , koj tuaj yeem nyeem ntxiv txog nws hauv
Faib thiab kov yeej
Feem ntau qhov xwm txheej rau hacking Ethereum daim ntawv cog lus zoo li no:
- Tus neeg koom nrog tso nyiaj rau hauv daim ntawv cog lus
- Tom qab ntawd nws coj cov nyiaj
- Ib yam dab tsi mus tsis ncaj ncees lawm
- Tus neeg tawm tsam siv nyiaj ntau dua
Yog hais tias peb rov qab mus rau peb thawj qhov piv txwv, ib yam dab tsi mus tsis ncaj ncees lawm yog hais tias lub riddle yog ib qho khoob ntawm bytes.
Yuav ua li cas nyiag ib labTsim ib qho kev sib pauv nrog tus hash 0x66687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925
Qhov no yog sha256 los ntawm 0x0000000000000000000000000000000000000000000000000000000000000000
Peb hloov qhov zais cia thiab nqa peb cov tokens
Peb kis dua thiab coj lwm tus, vim 0 = 0
Los ntawm kev tsim ib daim ntawv cog lus sib cais rau txhua qhov kev lag luam, peb tuaj yeem cais cov ntawv cog lus ntawm qib EVM.
Tab sis qhov ntawd tsis yog txhua yam: tam sim no txhua qhov kev lag luam muaj nws qhov chaw nyob, uas koj tuaj yeem hloov cov tokens los ntawm ib lub hnab nyiaj lossis pauv.
Tso tseg daim ntawv cog lus thiab tsim2
Tab sis tam sim no rau txhua qhov kev sib pauv peb yuav tsum tsim daim ntawv cog lus thiab tos rau tus neeg yuav khoom hloov chaw ua haujlwm "crypto-nrhiav" nyob ntawd. Nyob rau hauv "kev cog lus thaum sawv ntxov, nyiaj nyob rau yav tsaus ntuj" lub tswv yim, yeej ib txwm muaj kev txaus ntshai uas tus neeg yuav khoom yuav poob, thiab ether twb tau siv los tsim daim ntawv cog lus.
Nws puas tuaj yeem ua kom koj muaj nyiaj thaum sawv ntxov thiab yav tsaus ntuj?
Developers hauv Constantinople nyuaj diav rawg ntxiv cov kev qhia tsim2, uas tsim ib daim ntawv cog lus tshiab ntawm qhov chaw nyob txiav txim
keccak256( 0xff ++ address ++ salt ++ keccak256(init_code))[12:]
Qhov twg
- chaw nyob - chaw ua haujlwm cog lus cog lus
- ntsev - ib co naj npawb, lub ntsiab lus uas peb yuav kawm nyob rau hauv lub series tom ntej no
- init_code — cog lus bytecode thiab constructor tsis.
HoobkasCov lus qhia tsuas yog ua haujlwm los ntawm kev sib dhos, yog li lub Hoobkas zoo li txaus ntshai me ntsis:
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);
}
}
Koj daim ntawv cog lus code tuaj yeem tau txais los ntawm 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);
Vim tias tsis muaj kev txhawb nqa hauv kev sib zog, roj rau daim ntawv cog lus yuav raug suav tsis raug vim qee qhov subtleties ntawm ether.
Nws yog qhov zoo tshwj xeeb tshaj yog tias thaum muaj roj tsis txaus, daim ntawv cog lus sib tsoo nrog qhov yuam kev sab hauv, tsis tau tshaj tawm tias tsis muaj roj txaus, raws li koj xav tau.
Tam sim no peb tuaj yeem hloov cov tokens rau cov ntawv cog lus yam tsis tau tsim lawv ua ntej, thiab txog thaum peb tshaj tawm lawv hauv lub network, tsis muaj leej twg yuav twv seb daim ntawv cog lus ua li cas.
Ib tug raven yuav tsis peck tawm ib lub qhov muag
Nws yog qhov tseeb tias tus kws tshuaj ntsuam tiag tiag, tshwj xeeb tshaj yog ib tus uas tau txais kev nqis peev zoo hauv kev tawm tsam cov yeeb ncuab ntawm tsoom fwv nrog kev siv nyiaj laundering, yuav tsis raug tso tseg los ntawm cov me nyuam yaus, thiab tom qab tsim daim ntawv cog lus nws tseem yuav pom qhov hash.
Yuav ua li cas tiv thaiv tus hash los ntawm kev tshwm sim?
Peb hloov pauv nws tus kheej mus rau offchain: cov neeg koom sib pauv kos npe rau kev hloov mus rau ib daim ntawv cog lus sib pauv, thiab tom qab ntawd cov lus zais tau qhia tawm ntiag tug.
Ruam dhau ib ruamOb "multisigs" yog tsim los ntawm cov nyiaj uas tuaj yeem thim tau yog tias Alice thiab Bob tau kos npe.
Txhawm rau tiv thaiv ib tus neeg koom los ntawm kev mus rau offline los ua qhov xwm txheej, peb yuav ntxiv lub sijhawm qub zoo.
Alice thiab Bob ua deposits nyob rau hauv parallel
- Alice twv qhov tsis pub leejtwg paub thiab muab Bob tus hash ntawm qhov zais cia thiab kos npe kev lag luam uas hloov cov bitcoins mus rau qhov chaw sib pauv.
- Bob muab Alice kos npe rau rho tawm tokens rau daim ntawv cog lus sib pauv nrog rau qhov zais zais.
- Alice qhia Bob ib qho zais cia.
Lub sijhawm no, kev sib haum xeeb los: Alice thiab Bob tuaj yeem ua tiav qhov kev cog lus txhua lub sijhawm. Nyob rau hauv ib puag ncig zoo li no, lawv tuaj yeem sib pauv kos npe rho nyiaj mus rau qhov chaw nyob kawg.
Rau ib tus neeg saib xyuas sab nraud, nws zoo li cov nyiaj tau dhau los ntawm 2-ntawm-2 daim ntawv cog lus ntau.
Cov tswv yim no tseem tso cai rau ob tog kom tso nyiaj rau tib lub sijhawm, txij li qhov tsis pub leej twg paub tom qab txhua qhov kev lees paub.
theem 2
Txij li thaum peb tuaj yeem thim nyiaj mus rau ib qhov chaw nyob thiab tsis tshaj tawm qhov kev hloov pauv nruab nrab, tsis muaj dab tsi tiv thaiv peb los ntawm kev rho nyiaj mus rau ntau qhov chaw nyob thiab ua kom tsis muaj qhov txwv ntawm kev hloov pauv nruab nrab. Nws tsis yog tias qhov no yog qhov tsim nyog rau kev sib pauv, tab sis thaum koj pib sau ib qho kev sib pauv, nws nyuaj rau nres.
Tam sim no Alice thiab Bob yuav tuaj yeem tig mus nrog tag nrho lawv lub zog. Piv txwv li, cia li xam tus nqi nruab nrab los ntawm kev sib pauv satoshi ib ob, lossis tsuas yog txuas ncaj qha rau tus neeg tsim khoom lag luam thiab cov neeg tau txais txiaj ntsig.
Ruam dhau ib ruam
- Tus neeg muag khoom ua rau tsis pub lwm tus paub thiab muab tus neeg yuav khoom ntawm qhov tsis pub lwm tus paub thiab kos npe kev lag luam uas ib feem ntawm cov nyiaj tau xa mus rau qhov chaw nyob p2sh swap, thiab tus so yog xa rov qab mus rau tus neeg muag khoom qhov chaw nyob.
- Tus neeg yuav khoom xa daim ntawv kos npe tso cai sib pauv tokens thiab hloov pauv xa mus rau tus neeg txais qhov chaw nyob.
- Tus neeg muag khoom nthuav tawm qhov zais cia
- Keeb kwm rov ua dua nws tus kheej nrog qhov tsis pub lwm tus paub tshiab, thiab ntxiv rau qhov sib pauv thiab hloov pauv, tshem tawm qhov uas yav dhau los tau yuav rau tus neeg yuav khoom qhov chaw nyob thiab twb tau them rau tus neeg muag khoom qhov chaw nyob ntxiv.
Tam sim no peb tau nkag mus rau high-ceev p2p trading, qhov tseem ceeb yog kom taug qab lub sij hawm thiab kaw qhov deal ua ntej lub sij hawm.
Txawm li cas los xij, los ntawm kev tweaking peb cov ntawv cog lus me ntsis, peb tuaj yeem muab peb cov channel tsis txawj tuag, uas yuav ua rau nws yooj yim dua rau peb tsim lub network.
Tab sis peb yuav tham txog qhov no hauv ntu tom ntej.
Tau qhov twg los: www.hab.com
