교차 체인 스왑을 수행 할 수 없다는 것은 블록 체인 업계에 부담을주는 많은 문제 중 하나입니다. 그것은 블록 체인 기술의 적용을 제한합니다. 모든 솔루션 중에서 HTLC (Hash Time-Locked Contract)는 최고의 보안을 제공하는 교차 연쇄 트랜잭션의 원 자성을 보장합니다. 이 백서에서는 Qtum에 HTLC 구현을 제안하고 Qtum과 Bitcoin 사이의 원자 교차 교환 스왑을 보여줍니다.
원자 교차 교차 교환 [1]은 많은 교차 사슬 솔루션 중 하나입니다. 다음과 같은 이점이 있습니다.
단점은 다음과 같습니다.
현재 원자 교차 체인 스왑의 주요 응용 프로그램은 복수 통화 지갑에서 크립토 통화 간의 전환을 실현하는 것입니다. 원자 교차 교차 스왑이 기반으로하는 HTLC (Hash Time-Locked Contract) 기술은 강력한 보안 때문에 번개 네트워크 [2]와 같은 많은 프로덕션 환경에서 사용됩니다.
제 3 자 의존성과 원 자성을 갖지 않는 기능은 Bitcoin의 기본 원칙과 일치하므로 향후 원자 교차 교차 스왑의 미래가 시장에서 선호됩니다. 많은 주류 cryptocurrencies가 원자 교차 교차 교환을 실현하고 코드를 공개했습니다. cryptocurrency 기술과 시장이 성숙 해짐에 따라, atomic cross-chain swap은 더 많은 어플리케이션 시나리오를 가질 것입니다. 예를 들어 많은 양의 요금을 부과 할 중앙 교환을하지 않고도이 기술을 사용하여 블록 체인에서 대량의 크립토 통화를 교차 교환 할 수 있습니다.
서로 다른 블록 체인에서 사용되는 지불 스크립트가 다르기 때문에 원자 교차 교환 스왑의 구현이 다릅니다. Bitcoin 지불 스크립트 [3]를 기반으로 한 구현은 BTC, BCH 및 LTC와 같은 Bitcoin과 같은 암호문 교환을 가능하게합니다. Ethereum과 같은 암호 화와 ERC20 토큰 간의 교환을 실현하는 Solidity 기반 구현 [4]이있다. swap.online 프로젝트 [5]는 Bitcoin-like, Ethereum-like, EOS cryptocurrencies 간의 스왑을 실현하고 사용자가 스왑을 수행 할 수있는 제품을 만들었다. 다양한 cryptocurrencies에 대해 원자 교차 교환 스왑과 가격 매칭을 구현하는 지갑 제품도 있지만 Github에서는 해당 소스 코드를 찾을 수 없습니다.
Qtum은 Bitcoin 지불 스크립트와 Solidity를 모두 지원하므로 두 가지 방법으로 원자 교차 교환 스왑을 개발할 수 있습니다. 그러나 PoC로서 우리는 그것을 구현하는 가장 쉬운 방법, 즉 decred 프로젝트 [3]를 고려합니다. 이렇게하면 쉽게 구현할 수 있으며 QTUM과 BTC 사이의 스왑에 신속하게 적용 할 수 있습니다.
소스 코드가 Github [8]에 업로드되었습니다. 이론과 작동은 다음과 같이 자세히 설명됩니다.
HTLC의 기본 이론은 Jimmy Song의 Atomic Swaps [9] 에 설명되어 있다. 여기서 우리는 Bitcoin 지불 스크립트로 어떻게 실현되는지에 중점을 둘 것입니다.
예를 들어, Qtum 홀더 인 Alice는 Bitcoin 홀더 Bob과 원자 교차 교환을 수행합니다. 과정은 다음과 같습니다.
위에 설명 된 트랜잭션은 Bitcoin 지불 스크립트를 기반으로합니다. 트랜잭션 유효성 검사 프로세스에는 잠금 스크립트와 잠금 해제 스크립트라는 두 가지 유형의 스크립트가 있습니다. 잠금 스크립트는 출력에있는 지출 조건입니다. 잠금 해제 스크립트는 잠금 스크립트에 의해 출력에 설정된 조건을 "해결"하거나 충족시켜 출력을 소비하는 스크립트입니다. atomic cross-chain swap에서 사용되는 잠금 및 잠금 해제 스크립트는 다음과 같습니다.
Alice가 스왑을 시작하면 스크립트는 다음과 같습니다.
OP_IF OP_SIZE secretSize OP_EQUALVERIFY OP_SHA256 secretHash OP_EQUALVERIFY OP_DUP OP_HASH160 pubkHash OP_ELSE 잠금 시간 OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 pubkHash OP_ENDIF OP_EQUALVERIFY OP_CHECKSIG
OP_IF는 Bob이 토큰을 사용할 때 실행되는 분기이고 OP_ELSE는 시간 잠금에 도달하고 초기화 프로그램이 토큰을 환불 할 때 실행되는 분기입니다.
Bob이 토큰을 사용하면 잠금 해제 스크립트와 잠금 스크립트의 조합은 다음과 같습니다.
sig pubkey secret OP_SIZE secretSize OP_EQUALVERIFY OP_SHA256 secretHash OP_EQUALVERIFY OP_DUP OP_HASH160 pubkHash OP_EQUALVERIFY OP_CHECKSIG
유효성 검사 프로세스는 다음과 같습니다.
Bob이 시간 잠금 시간 이후에 토큰을 사용하지 않으면 Alice가 토큰을 환불 할 수 있으며 잠금 해제 및 잠금 스크립트 조합은 다음과 같습니다.
sig pubkey 비밀 잠금 시간 OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 pubkHash OP_EQUALVERIFY OP_CHECKSIG
유효성 검사 프로세스는 다음과 같습니다.
Qtum과 Bitcoin 사이의 원자 교차 교차 교환은 Alice가 보유한 1.2345 QTUM이 Bob이 보유한 0.005678 BTC로 교환되는 다음과 같이 표시됩니다. 최종 거래는 다음과 같습니다.
운영 프로세스는 다음과 같습니다.
$ bitcoind -daemon -rpcuser = 원자 -rpcpassword = 원자 -deprecatedrpc = signrawtransaction -addresstype = 유산
$ qtumd -daemon -rpcuser = 원자 -rpcpassword = 원자
$ qtumatomicswap -rpcuser = 원자 -rpcpass = 원자 적 개시 QZaxv8Kfyj469aBMGHnXo9eadydk3CVPLm 1.2345
비밀 : 5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558
비밀 해시 : 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040
계약 수수료 : 0.00114349 QTUM (0.00510487 qtum / kB)
환불 수수료 : 0.00151614 QTUM (0.00521010 qtum / kB)
계약 (MA6WNfmbWyzUAS78jbg4Avj4iomKBuYq6M) :
6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888ac
계약 거래 (ffd08f31ceff36c39fa142b0507b1c71839f4684cce42b2a74ec06917a71c4ae) :
020000000156c6222b3e502930542d29f02e56f6aedc0c1396c934b7fafb673e0cc029b991000000006b483045022100e5da4a9f78ed63cd5c2dfa67ba40710493214984318571427bd806fc6831c68002206e487f9d53d323c8cc72c10496feafa58be3b66242bdca1c3991cbafd252f8e3012103b4d6184f0c3a25ba4edaacf7b311a94869f87d8501d5d9ca2c9cbb0dc1c409ebfeffffff0290b25b070000000017a9141815a4111cbd02fa4d17755d2a5764e6b09b1a648759855116000000001976a914b65efa851b3dbfff005a7aa8d0620b133d87d27688ac00000000
환불 거래 (beb0d86be8d102f5024538364328ead471da98b29a27a7a525502e45728bcdb7) :
0200000001aec4717a9106ec742a2be4cc84469f83711c7b50b042a19fc336ffce318fd0ff00000000ce47304402207b980278cf263e3d64d4fb3c4ae14d5cfebd34d8ce48ee208a5eff34da57c319022021023a2c3995003a38ca46ed397559aa1f8445124905f7e2986671eac9004c45012102b6a0684882463dcd9b812424a85f6b253b7d4a8b4b64485e7da8fb66eed2018f004c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888ac000000000152625907000000001976a914200adfb06b1016330fcc6bf45e18403b74788a6d88ac2305325c
계약 거래 게시? [y / N] y
게시 된 계약 트랜잭션 (ffd08f31ceff36c39fa142b0507b1c71839f4684cce42b2a74ec06917a71c4ae)
$ qtumatomicswap -rpcuser = 원자 -rpcpass = 원자 auditcontract의 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888ac 020000000156c6222b3e502930542d29f02e56f6aedc0c1396c934b7fafb673e0cc029b991000000006b483045022100e5da4a9f78ed63cd5c2dfa67ba40710493214984318571427bd806fc6831c68002206e487f9d53d323c8cc72c10496feafa58be3b66242bdca1c3991cbafd252f8e3012103b4d6184f0c3a25ba4edaacf7b311a94869f87d8501d5d9ca2c9cbb0dc1c409ebfeffffff0290b25b070000000017a9141815a4111cbd02fa4d17755d2a5764e6b09b1a648759855116000000001976a914b65efa851b3dbfff005a7aa8d0620b133d87d27688ac00000000
계약 주소 : MA6WNfmbWyzUAS78jbg4Avj4iomKBuYq6M
계약 금액 : 1.2345 QTUM
받는 사람 주소 : QZaxv8Kfyj469aBMGHnXo9eadydk3CVPLm
작성자의 환불 주소 : QUGnzfP3f9VzbgzvjTQUrD77BqzRvBNgzo
비밀 해시 : 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040
잠금 시간 : 2019-01-06 13:39:47 +0000 UTC
47h45m56s에 도달 한 잠금 시간
$ btcatomicswap -rpcuser = 원자 -rpcpass = 원자 참여 1MLrV4fegYEiZQHhVeAiY2bi7ptdUxXAkr 0.005678 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040
계약 수수료 : 0.00000264 BTC (0.00001184 BTC / kB)
환불 수수료 : 0.00000351 BTC (0.00001202 BTC / kB)
계약 (3HZjVwSARiYGP6VrRF53yBwDLttXW4zpAN) :
6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888ac
계약 거래 (5984f23230715f7c20163356dce62a4afe0ee476b8567987432fa52758967f0f) :
0200000001575468b298b892115bc0cfbc22383a07b605ac6885f89d1c0c98fc22bcc93e4d130000006a47304402200836e0f0d050a6143197bf4cf2aa0d6b1d98603e301b763143e654338e6558f702207ad1ad41cb8e39de4047902c9952902c58111cf8adc135476f2bc1bd99e7f292012102cf81d5df7b8c17a7a624984fa7c97cc16849d1ca4122a4894c2a126d4e54d429feffffff0236181500000000001976a9144691ce0beb3a36ee67630c58a097a22e93406f2088acf8a908000000000017a914ae2163fc069b8616afcf7f6b70bee7657d35490d8700000000
환불 거래 (2a30182d1b08c5d4f7931266e169a75b7cb631bbc43c32f681145df7a8829717) :
02000000010f7f965827a52f43877956b876e40efe4a2ae6dc563316207c5f713032f2845901000000cf483045022100cc53e08b3d238ca1ce21a8c4041966cd13710d6c9ed56199354d0f46bfeddfb402204c511d7b86be31c0dabb52fe5c2582871c8b4c3683ea46de018037dbee253f8e012102229b695d92beb1312b0c316e1f0c841c90deccc510994ff14bcea3dfe0873255004c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888ac000000000199a80800000000001976a914534c747a0ab001b92a0fa57cdd32459b14ed096b88acc5b7305c
계약 거래 게시? [y / N] y
게시 된 계약 거래 (5984f23230715f7c20163356dce62a4afe0ee476b8567987432fa52758967f0f)
$ btcatomicswap -rpcuser = 원자 -rpcpass = 원자 auditcontract의 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888ac 0200000001575468b298b892115bc0cfbc22383a07b605ac6885f89d1c0c98fc22bcc93e4d130000006a47304402200836e0f0d050a6143197bf4cf2aa0d6b1d98603e301b763143e654338e6558f702207ad1ad41cb8e39de4047902c9952902c58111cf8adc135476f2bc1bd99e7f292012102cf81d5df7b8c17a7a624984fa7c97cc16849d1ca4122a4894c2a126d4e54d429feffffff0236181500000000001976a9144691ce0beb3a36ee67630c58a097a22e93406f2088acf8a908000000000017a914ae2163fc069b8616afcf7f6b70bee7657d35490d8700000000
계약 주소 : 3HZjVwSARiYGP6VrRF53yBwDLttXW4zpAN
계약 금액 : 0.005678 BTC
수신자 주소 : 1MLrV4fegYEiZQHhVeAiY2bi7ptdUxXAkr
작성자의 환불 주소 : 1KaMFF6XwvJahrohzzDmHzFgMxNuHSBege
비밀 해시 : 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040
잠금 시간 : 2019-01-05 13:57:25 +0000 UTC
Locktime 도달 23h55m47s
= 원자 $ btcatomicswap -rpcuser = 원자 -rpcpass 구속 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888ac 0200000001575468b298b892115bc0cfbc22383a07b605ac6885f89d1c0c98fc22bcc93e4d130000006a47304402200836e0f0d050a6143197bf4cf2aa0d6b1d98603e301b763143e654338e6558f702207ad1ad41cb8e39de4047902c9952902c58111cf8adc135476f2bc1bd99e7f292012102cf81d5df7b8c17a7a624984fa7c97cc16849d1ca4122a4894c2a126d4e54d429feffffff0236181500000000001976a9144691ce0beb3a36ee67630c58a097a22e93406f2088acf8a908000000000017a914ae2163fc069b8616afcf7f6b70bee7657d35490d8700000000 5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558
사용 수수료 : 0.0000039 BTC (0.00001200 BTC / kB)
거래 교환 (1dfc072337d079847fb634ebf7d4a5d51874142dd3bbb958c3556afa1b2fc29c) :
02000000010f7f965827a52f43877956b876e40efe4a2ae6dc563316207c5f713032f2845901000000f0483045022100a15b3165defce6994ebdddd2dc83c67032aa40f1095218ed474895135426ea6a02201e0dd886c7d5007b17436261c1e82f881874d2a8c9b1dae0f8b7a851c3eeebd201210274e7945427e4c669c7e8c9440fb694bcce47dccc1af17b997cea0a055040b400205999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558514c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a914df23b9da392add0d4d230e8c8ecea2a62d0797156704c5b7305cb17576a914cbc0e41865cd6c90c35df30629bc106de707ed6b6888acffffffff0172a80800000000001976a914008d0a620a3cebd41927eaaebb67e541878c4b2a88acc5b7305c
쿠폰 사용을 게시 하시겠습니까? [y / N] y
게시 된 교환 거래 (1dfc072337d079847fb634ebf7d4a5d51874142dd3bbb958c3556afa1b2fc29c)
$ btcatomicswap -rpcuser = 원자 -rpcpass = 원자 추출 암호 594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a106040
비밀 : 5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558
= 원자 $ qtumatomicswap -rpcuser = 원자 -rpcpass 구속 6382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888ac 020000000156c6222b3e502930542d29f02e56f6aedc0c1396c934b7fafb673e0cc029b991000000006b483045022100e5da4a9f78ed63cd5c2dfa67ba40710493214984318571427bd806fc6831c68002206e487f9d53d323c8cc72c10496feafa58be3b66242bdca1c3991cbafd252f8e3012103b4d6184f0c3a25ba4edaacf7b311a94869f87d8501d5d9ca2c9cbb0dc1c409ebfeffffff0290b25b070000000017a9141815a4111cbd02fa4d17755d2a5764e6b09b1a648759855116000000001976a914b65efa851b3dbfff005a7aa8d0620b133d87d27688ac00000000 5999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558
사용 수수료 : 0.00168464 QTUM (0.00519951 qtum / kB)
거래 교환 (10008e0a43a56b19266bcc087785789eb4af75c34f3501fb1caed05b63b11a61) :
0200000001aec4717a9106ec742a2be4cc84469f83711c7b50b042a19fc336ffce318fd0ff00000000ef47304402203ac06fb2ca8c5a3ffe89c424df7aa43b4fca57001815f7a48fd93d3c2bc4b58f02205fdc2179cb2db53552e3ada562f89097f9901b18dfb05c581e30cf54e88048fe012103f25b08492e78e32bb637eea3702e7587e7028b5256485b689b8310dac601f47a205999ed9033b9c10d18c3b8bf1b9f8a126ad5a7a77446521f97a9d523366bc558514c616382012088a820594bcc33084211c6607a561dcd3bcfb1a39f049cb4fb760a0d981a6d4a1060408876a9148e6839431a103352e20491de639eff514a659a4267042305325cb17576a914541fd33cc2409e9cc2a659eb005e7a00cfa1738b6888acffffffff0180205907000000001976a914631d44dd763ea361ffb68765f6c6d0aa4dc21a0e88ac2305325c
쿠폰 사용을 게시 하시겠습니까? [y / N] y
게시 된 교환 거래 (10008e0a43a56b19266bcc087785789eb4af75c34f3501fb1caed05b63b11a61)
[1] 원자 적 교차 사슬 교환. https://arxiv.org/pdf/1801.09515.pdf.
[2] Bitcoin 번개 네트워크 : 확장 가능한 오프 체인 인스턴트 결제. https://lightning.network/lightning-network-paper.pdf.
[3] 원자 스왑 구현을 결정했습니다. https://github.com/decred/atomicswap.
[4] Secto-io 원자 스왑 구현. https://github.com/secto-io/atomic-swap.
[5] Swap.online 원자 스왑 구현. https://github.com/swaponline/swap.core.
[6] 교환. 온라인. https://swap.online/.
[7] 원자재. https://atomicwallet.io/.
[8] Qtum 원자 스왑 구현. https://github.com/qtumatomicswap/atomicswap.
[9] 원자력 스왑. https://bitcointechtalk.com/atomic-swaps-d6ca26b680fe.
Huo Dong ( [email protected] ), Zheng Yi ([email protected])
https://blog.qtum.org/atomic-cross-chain-swap-on-qtum-7e756a890ed7
꿘텀님 매번 수고가 많습니다^^