Summary
Crosschain swap assumes that Alice transfers bitcoins to Bob and at the same time Bob transfers ethers to Alice. But how those two transfers could be done in a safe way? What if Bob getting bitcoins will not send ethers to Alice? Such two transfers should be perofrmed in a trustless way. Atomic crosschain swap is required to implement.
Description
Atomic crosschain swap transactions
Lykke is semi-centralized exchange that means that a matched trade is settled on a blockchain as an atomic transaction. A single trade between two parties is calles "swap" of two kinds of assets between those two parties. Proof of concept for atomic crosschain swaps BTC<>ETH is required to be implemented:
Crosschain atomic swap assumes that Alice transfers BTC to Bob on the Bitcoin blockchain and at the same time Bob transfers ETH to Alice on the Ethereum blockchain. Such two transfers should be made in trustless way – swap must be atomic operation (see more Atomic cross-chain trading).
Why not to use BTC Relay?
BTC Relay is a smart contract that allows to lock ETH until BTC would be provided on the requested bitcoin address. The smart contract is needed to be feeded up with the bitcoin blockchain information to be able unlock ETH payments.
Anyone can be a Relayer who provides bitcoin blockchain hashes to the smart contract. But the major issue is that the BTC Relay solution is not scalable. It would not not work for the offchain micropayment channels. It is entirely based on the onchain information.
What we want to achieve is to build a similar to BTC Relay smart contract which would also provide locking of ETH until BTC transfered to the requested address. But the main difference is that the smart contract should not hold chain of bitcoin block hashes. To unlock funds a preimage R of hash H=hash(R) must be revealed on both Ethereum and Bitcoin blockchains. The same hash locks mechanism will be used for the micropayment channels on the further projects. Currently the proof-of-concept for the onchain ETH-BTC atomic swap is only required based on hash locks.
https://streams.lykke.com/Project/ProjectDetails/5b33b9661c254022a8d0cb222b0d503b