Lava跨鏈原子交換概念解析

買賣虛擬貨幣
跨鏈原子交換概念介紹:假設Alice持有BTC,想要換取Bob持有的LV。雙方達成了交易醫意願,並確定了兌換比例和具體的交易金額。雙方如何進行交易呢?-如果Alice先把比特幣轉賬給Bob,Alice會擔心萬一Bob收了比特幣就逃跑了、消失了。如果Bob先把LV轉賬給Alice,Bob同樣需要擔心Alice可能會逃跑、消失。因此,數字貨幣之間的交易,往往需要一個可信第三方,例如交易所或者交易見證人。那麼是否有可能在沒有中介、交易雙方也不完全信任對方的情況下完成交易呢?跨鏈原子交換,就提供了一種完全依賴鏈上交易、保證兩種數字貨幣之間能夠在無中介的情況下無風險交易的方式。所謂“原子交換”,是指交易要麼整體完成,要麼整體失敗,不會因一方完成而另一方失敗造成單方損失。
LV-BTC跨鏈原子交換全流程:(假設Alice持有BTC,想要換取Bob持有的LV)STEP1:Alice發起交易STEP2:Bob響應交易STEP3:Alice取走LVSTEP4:Bob取走BTC說明:當前版本的LV-BTC跨鏈原子交換機僅為全節點錢包內建(0.3.4版本開始支援),使用者需要有操作全節點錢包(命令列方式)的基礎。未來,Lava會進一步完善跨鏈原子交換機的使用體驗。
【STEP 1:Alice發起交易】“我是Alice,我手裡持有BTC,要交換Bob手裡持有的LV。我們已經約定好了交易的數量和價格。現在需要由我來發起跨鏈原子交換!”1. 首先,自定義一個謎底,比如說 “abcd”,記住千萬不能告訴任何人!接著,透過getimage獲取相應的謎面(imagehash)。輸入:自定義的謎底,此處為abcd返回:{ "preimage": "abcd",
"imagehash_SHA256": "123d4c7ef2d1600a1b3a0f6addc60a10f05a3495c9409f2ecbf4cc095d000a6b","imagehash_RIPEMD160": "a21c2817130deaa1105afb3b858dbd219ee2da44"}2. 然後可以開始構造BTC上的HTLC交易:先建立一個BTC凍結地址。使用createhtlcaddress介面。輸入:•Bob的BTC地址(私下問bob要):mgLqJcG6kykw636f4B8BtKjx5HUmnh2442,
•我自己的BTC地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,•上面的謎題(選取短的即可):a21c2817130deaa1105afb3b858dbd219ee2da44•這筆錢的凍結高度(BTC高度):1609905 (注意,這裡的高度含義是當BTC主網超過這個高度時,我有權直接收回凍結的BTC。)
返回:{"address": "2MwjSbwWbq6u3Yyvrz67meWUZ6WaaVqdFbT","redeemScript": "63a614a21c2817130deaa1105afb3b858dbd219ee2da448876a914090e217eff3b75215b5d106ad861d40e0d46af776703b19018b17576a91402b6eb3eb965532c942f1c112c585716db12b0636888ac"}3. 現在,對上面產生的凍結地址:“2MwjSbwWbq6u3Yyvrz67meWUZ6WaaVqdFbT”
轉入約定數量的BTC。轉賬完成後,這些BTC就暫時凍結在這個地址中了。凍結完成後,將以下三個資訊私下通知給Bob,等待Bob響應即可。我自己的BTC地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,上面的謎面(選取短的即可):a21c2817130deaa1105afb3b858dbd219ee2da44 
(千萬別把謎底“abcd”告訴Bob!)這筆錢的凍結高度(BTC高度):1609905【STEP 2:Bob響應交易】“我是Bob,我手裡持有LV,要交換Alice手裡持有的BTC。我們已經約定好了交易的數量和價格。Alice已經跨出了第一步,現在我該做什麼呢?”1. 首先,要對Alice發起的交易進行驗證。
假設現在我(Bob)收到了Alice透過微信發給你的三個資訊:•Alice的BTC地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,•一個很難解的謎面:a21c2817130deaa1105afb3b858dbd219ee2da44•Alice設定的BTC凍結高度:1609905
接下來,我需要驗證Alice給我的資訊的真實性和有效性:首先驗證凍結高度1609905是否已經到達?→如果主網已經到達了1609905,那麼不能再操作,告訴Alice不交易了,讓她取回自己的BTC。→如果高度未到達,我就可以繼續操作。透過上述資訊呼叫createhtlcaddress介面,復現Alice的操作,依次輸入:•我(Bob)自己的BTC地址:mgLqJcG6kykw636f4B8BtKjx5HUmnh2442,
•Alice的BTC地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,•上面的謎題:a21c2817130deaa1105afb3b858dbd219ee2da44•Alice手中BTC的凍結高度(BTC高度):1609905返回:
{"address": "2MwjSbwWbq6u3Yyvrz67meWUZ6WaaVqdFbT","redeemScript": "63a614a21c2817130deaa1105afb3b858dbd219ee2da448876a914090e217eff3b75215b5d106ad861d40e0d46af776703b19018b17576a91402b6eb3eb965532c942f1c112c585716db12b0636888ac"}其次驗證Alice是否已經往該凍結地址中轉入BTC?去瀏覽器上查詢:“2MwjSbwWbq6u3Yyvrz67meWUZ6WaaVqdFbT”地址的交易記錄,看看Alice有沒有給它轉賬約定數量的BTC。這個數量也就是之後我(Bob)會獲得的BTC數量。以上驗證步驟,有任何一個地方出現問題,請立即終止交易!
2.驗證透過,Alice沒騙我。下面我需要構造一筆凍結LV的交易,以響應Alice的交易請求。與Alice流程一樣,我開始構造Lava上的HTLC交易,建立一個Lava的凍結地址。使用createhtlcaddress介面。依次輸入:•Alice的Lava地址(私下問Alice要):mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,•自己的Lava地址:
mgLqJcG6kykw636f4B8BtKjx5HUmnh2442,•上面的謎面:a21c2817130deaa1105afb3b858dbd219ee2da44•這筆錢的凍結高度(Lava高度):7600  →注意:請確保該Lava高度到來的比Alice設定的BTC高度更早!這一點非常重要!返回:{"address": "2NBzEWiW4T9de94VRRq2RZno1712uSxopG9",
"redeemScript": "63a614a21c2817130deaa1105afb3b858dbd219ee2da448876a91402b6eb3eb965532c942f1c112c585716db12b0636702b01db17576a914090e217eff3b75215b5d106ad861d40e0d46af776888ac"}3. 向凍結地址:“2NBzEWiW4T9de94VRRq2RZno1712uSxopG9”轉入約定數量的LV。 完成轉賬後,將以下資訊私下通知給Alice,等待Alice進一步響應即可:這筆錢的凍結高度(LAVA高度):7600【STEP 3:Alice取走LV】
“我是Alice,我手裡持有BTC,要交換Bob手裡持有的LV。現在,Bob已經完成對LV的凍結,我需要取走這些LV以完成交易。”1. 首先是檢驗Bob設定的高度和金額資訊是否正確:獲得Bob發來的Lava高度資訊 7600 後,開始用相同的方式推演出Bob的凍結地址。當然,請確保這個Lava高度 7600 還沒達到, 否則請終止交易(放心,不會有任何損失)。仍然呼叫createhtlcaddress:輸入:
•自己的Lava地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,•Bob的Lava地址:mgLqJcG6kykw636f4B8BtKjx5HUmnh2442,•自己創的謎題:a21c2817130deaa1105afb3b858dbd219ee2da44
•這筆錢的凍結高度(Lava高度):7600返回:{"address": "2NBzEWiW4T9de94VRRq2RZno1712uSxopG9","redeemScript": "63a614a21c2817130deaa1105afb3b858dbd219ee2da448876a91402b6eb3eb965532c942f1c112c585716db12b0636702b01db17576a914090e217eff3b75215b5d106ad861d40e0d46af776888ac"}然後,去Lava的主網檢視:
"2NBzEWiW4T9de94VRRq2RZno1712uSxopG9"地址上是否有約定好的LV金額。沒有的話就取消交易吧。2. 以上都確認無誤後,我將要進行最後的步驟:提款走人。根據Lava瀏覽器查詢結果,我已經知道Bob凍結LV的交易id是:b05fa0adec37559f98b7b94c775e78f6e93434c0029c3795eae584a69580957b接著,呼叫整個交換過程中最複雜的介面spendhtlcwithwallet來將這些LV轉走。輸入:
•剛才獲取的bob凍結LV交易的txid:b05fa0adec37559f98b7b94c775e78f6e93434c0029c3795eae584a69580957b•上面交易中的對應output序號,可以瀏覽器自己查詢看到,也可以用命令列看到,這次是0。我們用命令列來驗證下。確實是0.•Alice想取走的金額:當然是取走所有約定的金額 •Alice的LV接收地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD (重要,就是接受這筆LV的地址。這是一個我的私人地址。)
•Alice之前設定的謎底:abcd (終於用上了!)以及Bob構造這筆100lv凍結交易時的資訊:•Alice使用的謎題:a21c2817130deaa1105afb3b858dbd219ee2da44•Alice的Lava地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,
•Bob的Lava地址:mgLqJcG6kykw636f4B8BtKjx5HUmnh2442,•這筆錢的凍結高度(Lava高度):7600•標誌位,表示該花費交易是否為贖回交易:這裡填0,表示是正常流程的互換交易;如果填1,表示是違約後,或者超時後的取回交易。
返回:02000000017b958095a684e5ea95379c02c03434e9f6785e774cb9b7989f5537ecada05fb000000000bf473044022068d9e6c815d99fedd31b6cd4f205124a8e1da3b2b65042c389ddca873ff708cb02203864c31bf8b8597de9e2f101b006dd0f55877e9854af568df10525297cdabef6012102da788aa6e547746556a27bee415ff3187df45033e3ef7e79fe8d506047bd6fb802abcd514c4f63a614a21c2817130deaa1105afb3b858dbd219ee2da448876a91402b6eb3eb965532c942f1c112c585716db12b0636702b01db17576a914090e217eff3b75215b5d106ad861d40e0d46af776888ac00000000017ccc0b54020000001976a91402b6eb3eb965532c942f1c112c585716db12b06388ac00000000把以上結果在用sendrawtransaction介面傳送到Lava主網。獲得txid為:2abc47531de88a6952614702f3c842f24e4d524fc73e16b07934e530f46e9135【STEP 4:Bob取走BTC】
“我是Bob,我手裡持有LV,要交換Alice手裡持有的BTC。現在Alice已經取走了我凍結的LV,現在我要取走Alice凍結的BTC來正式完成這筆交易。”1. 觀察Lava瀏覽器,我發現之前凍結LV的地址 2NBzEWiW4T9de94VRRq2RZno1712uSxopG9 中出現一筆轉賬交易:2abc47531de88a6952614702f3c842f24e4d524fc73e16b07934e530f46e9135這也就是剛才Alice轉走LV的交易。既然Alice已經利用謎底轉走LV了,那麼這個謎底就暴露在區塊鏈上了!呼叫checkpreimage介面即可獲取Alice公佈的謎底:輸入引數為:
目標txid:2abc47531de88a6952614702f3c842f24e4d524fc73e16b07934e530f46e9135返回:{"Preimage": "abcd"}由此,我知道了Alice設定的謎底就是 abcd。2. 接下來,我也使用spendhtlcwithwallet介面來轉走Alice凍結的BTC:
輸入引數:•剛才獲取的Alice凍結BTC的txid:4b879e138ea104569d718f12bb47d7207c908f7f2ee5750ddf127bc8bebf0060•上面交易中的對應輸出序號,可以瀏覽器自己查詢看到,是0。•我想轉走的金額:當然是取走所有約定的金額 •我的BTC接收地址:
mgLqJcG6kykw636f4B8BtKjx5HUmnh2442•Alice之前設定的謎底:abcd (剛才獲得的)以及Alice構造這筆0.00031BTC凍結交易時的資訊:•Alice使用的謎題:a21c2817130deaa1105afb3b858dbd219ee2da44•我的BTC地址:
mgLqJcG6kykw636f4B8BtKjx5HUmnh2442,•Alice的BTC地址:mfmJmsGPgoJGPY4yzZsDj4Z5CfpWUQQHHD,•這筆錢的凍結高度(BTC高度):1609905•標誌位,表示該花費交易是否為贖回交易:這裡填0,表示是正常流程的互換交易,
如果填1,表示是違約後,或者超時後的取回交易。將上面獲取的結果透過Lava內建的命令sendrawBTCtx傳送到BTC主網,即可取回屬於我的BTC,大功告成!這裡需要注意:1.軟體預設使用的比特幣區塊鏈瀏覽器(https://www.blockcypher.com/)可能有翻牆的問題,可能使sendrawBTCtx傳送不成功。我們也可以直接去該網站或者其他比特幣主網瀏覽器上直接傳送交易。2.考慮到BTC網路交易費用很高,所以做這筆BTC主網交易之前一定要設定好合理的settxfee!具體的btc交易費一般都可以在btc瀏覽器上找到。在第四步Bob使用spendhtlcwithwallet之前,先呼叫lava全節點的settxfee=btc主網費率即可。Lava透過PoC共識機制讓人人挖礦成為現實,⼤大降低了挖礦的門檻和成本。使得挖礦成為每⼀個人都可以操作的小事情。更透過「跨鏈原⼦子交換機」使得⽤戶挖出來的幣有了更加方便、安全的流通⽅式,使得Lava⽣態變得更為健康和完善,保證了挖礦⽤戶的收益,也保持了鏈上的活性。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;