Q&A: Bitcoin Atom Under The Hood
Updates on GUI Wallet releases, the cryptocurrencies you can swap with BCA now, and a whole lot more
Q&A: Atomic Swaps — the “atomic power” of Bitcoin Atom- Direct Exchange of Cryptocurrencies with No Centralized Exchanges
Can Bitcoin Atom atomic swaps currently be performed by two parties on the mainnet?
Yes, swaps can be performed both in the testnet and mainnet environments, with all supported coins.
What cryptocurrencies can Bitcoin Atom do atomic swaps with now?
BCA has a full atomic swap compatibility with the following cryptocurrencies:
BTC (Bitcoin)
ETH (Ether)
BCH (Bitcoin Cash)
LTC (Litecoin)
DASH (Dash)
DCR (Decred)
PART (Particl)
SYS (Syscoin)
VIA (Viacoin)
VTC (Vertcoin).
Expected to be included in the list soon:
All ERC20 tokens*
Zcash
*This is significant. There are currently over 37,000 ERC20 tokens. A list is available here, starting with the ERC20 tokens having the largest market caps, and which are therefore the most well known.
Please see this compatibility chart for other cryptocurrencies: https://swapready.net/
How do other existing cryptocurrencies interact with BCA to perform an atomic swap?
Currently there is a mechanism which lets one create a digital lockbox both in BCA and in another cryptocurrency (see compatibility chart linked above), effectively conducting the atomic swap between different blockchains.
This is not fully automated at the moment and is performed via a separate tool. We have an HTLC API in development, which is expected to fully automate atomic swaps across different blockchains.
Is this atomic swap capability done through your HTLC API?
Per our reply above, this is done via raw HTLC scripting at the moment, though we plan to shift to using the HTLC API, and thus to an automated way of swapping coins across various blockchains, once it is released.
As shown in our roadmap presented on bitcoinatom.io, the HTLC API implementation is scheduled to be finalized this month, February 2018.
P2P Atomic Swaps from Your Desktop or Browser
Once the HTLC API is released, we plan to publish GUI clients (both desktop & web) to securely swap supported cryptocurrencies (see the list linked above).
The availability of desktop and Web GUI clients means that you will be able to conduct direct atomic swaps between cryptocurrencies from your desktop or browser via a simple point-and-click interface, free of exchange-based slowdowns and without high exchange fees.
Please describe in detail how on-chain atomic swaps are performed with Bitcoin Atom
Swaps are currently executed by conducting the following steps on both chains, by using command line tools with low-level scripting under the hood:
Generating a new address for the swap
Creating an HTLC contract (sending a contract tx)
Auditing an HTLC contract provided by the other party
Redeeming funds paid into the contract on the other chain
- Refunding the contract transaction if swap did not take place
Did your team utilize an existing HTLC framework, or build your own from the ground up?
Our team utilizes existing hashlock and timelock constructs, which are implemented by using the Bitcoin scripting language and its analogs in other cryptocurrencies supporting atomic swaps. These low level contracts are used to create HTLC lockboxes in Atom.
Can you provide some additional details of how the swap works?
For example, if you and I were to execute a swap between BCA and BTC, would we both supply wallet addresses for the input and output tx, where the funds would be received and sent after the HTLC conditions are me.
Both of us would generate new addresses which will receive coins as a result of a trade.
In case I want to trade BTC for BCA, I generate a new BCA address to receive BCA coins, and provide it to you.
You generate a new BTC address to receive BTC, and give it to me. Once we have exchanged our receiving addresses,
I create and send a contract transaction, conditionally sending a certain amount of BTC (e.g. 1 BTC) to your receiving BTC address.
This is called the atomic trade initialization. Right after this step, you audit my contract transaction, verifying the amount, your receiving address and a refund period.
If everything is okay, you conduct a second transaction, conditionally sending a corresponding amount of BCA (e.g. 10 BCA) to my BCA address.
After receiving your transaction, I audit your transaction as well, checking all of the values which it contains.
If that is okay, I then proceed with the trade, redeeming my newly acquired BCA from the contract.
This reveals a special secret value to you, allowing you to redeem your BTC right away after my redemption is successful.
If either party in such a swap attempts to defraud the other, at any point, anyone can cancel the trade and refund the initial deposit.
Is fee-splitting a condition which is observed in your HTLC, or does each party pay their own respective fees based on the crypto they are tx’ing?
Each party involved in a single on-chain atomic trade has to pay a tx fee twice: first tx fee on the original chain and second tx fee on the other chain, coins of which he is receiving as the result of the trade.
In other words, each atomic trade counterparty has to pay transaction fees for both the swap (contract) transaction and the redemption transaction on each chain.
However, paying a tx fee on both chains is still cheaper in many cases for most cryptocurrencies, as compared to paying % fees to centralized exchanges, and is certainly true for changing higher amounts without intermediaries.
Further, off-chain atomic trading should minimize even these overhead costs for tx processing on both chains. Please note, that most of the atomic trade steps described above may be automated and made much more user-friendly, with a GUI overlay, which is exactly what we are now working on.
Generally the exchange of value is pre-arranged by both parties — does the contract only tx the respective amounts in the wallet address, or is it assumed that the entire balance of the wallet address at the start of the transaction are given up, and therefore an exact amount of the currency must be deposited in the start address?
The latter is correct: we treat new addresses with contract transactions as digital lockboxes, thus an exact amount of the currency must be deposited by the trade initiator prior to the trade. This is a technical requirement to immediately enter a trade.
However, orderbook functionality, with bids and offers, prior to the direct atomic trade matching, can be effectively implemented without locking any coins in advance.
This is one of the user-friendly Atomic Swap trading approaches, which we are working on at the moment.
In other words, pre-arranging trades and/or locking coins on different addresses (when trying to place cross-blockchain limit orders) is not required in most cases prior to the trade, and can be automated in a user-friendly way.
Does BCA standardize the type of information that can be used to construct the private key, such as a seed, or image?
Yes, BCA is utilizing the standard BIP44 to generate accounts and addresses, and BIP39 to generate the seed, just as the most up-to-date version of BTC does.
The seed is available both as a text (recovery mnemonic phrase) and an image (QR). In addition, BCA is always tracking updates from the Bitcoin codebase, thus ensuring full compatibility with the latest BTC standards, while also introducing advanced cross-blockchain trading capabilities.
How is transaction finality achieved?
Transaction finality is the same as in BTC, 6 confirmations received by the transaction is considered a safe value to ensure the transaction’s finality. This happens once 5 blocks of any type (PoW / PoS) are generated after the transaction is included in either a PoW or PoS block.
What is the expected rate of tps (transactions per second)?
BCA is a SegWit enabled Bitcoin fork, currently capable of processing ~21 tps and more than 50,000 tps after lightning network activation, which is scheduled to happen in 2018. To put this in perspective, Bitcoin (BTC) currently has a transaction rate of roughly 3–4 tps.
To stay current on Bitcoin Atom technical developments, please bookmark this link to the Bitcoin Atom Wiki:
https://github.com/bitcoin-atom/bitcoin-atom/wiki
Please see part 2 of this 2 part Q&A series here — Bitcoin Atom: Under The Hood, Part 2
ABOUT BITCOIN ATOM
Bitcoin Atom (BCA) is a SegWit enabled Bitcoin fork with on-chain atomic swaps on board and hybrid consensus. Bitcoin Atom enables truly decentralized digital asset exchange by utilizing hash time-locked contracts (HTLCs) and its own HTLC API, giving independence from intermediaries and any centralized entities.
Bitcoin Atom’s development team is working on a special embedded toolkit for both on-chain and off-chain atomic swaps, allowing for exchanging any cryptocurrencies in a hassle-free way across different blockchains. Lightning Network off-chain swaps scheduled to be launched in 2018.
The Bitcoin Atom (BCA) fork took place at block #505888 on January 24, 2018.
For additional information, please visit Bitcoin Atom’s website at bitcoinatom.io
Bitcoin Atom Web & Social Media
Contact The Team: [email protected]
Telegram: t.me/bitcoinatom
Bitcointalk: bitcointalk.org/index.php?topic=2515675
Reddit: www.reddit.com/user/BitcoinAtom
Facebook: www.facebook.com/atombitcoin
Twitter: twitter.com/atombitcoin
Medium: medium.com/@bitcoinatom
Bitcoin Atom Wiki: https://github.com/bitcoin-atom/bitcoin-atom/wiki
Great post! Follow me and i will follow you. I will auto upvote anyone who is following me.
Check https://mykucoin.com for more Cryptocurrency news