在過去的幾個月裏,咱們一直在討論如何以最放心和用戶友好的方式將比特幣和其餘貨幣帶入以太坊區塊鏈。咱們的想法是建立一個表明比特幣的ERC20 Token,爲了簡潔起見,咱們稱之爲BTCT。用戶能夠從他們現有的比特幣建立新的BTCT,而後再兌換他們的BTCT以得到比特幣。BTCT能夠實現的應用程序各不相同,從去中心化交換到支付再到高級金融產品。在Kyber Network,容許用戶在比特幣和其餘ERC20代幣之間進行交易是咱們的主要優先事項之一,由於它將有助於增長交易所的交易量。這篇文章描述了咱們一直在考慮的這個挑戰的一些可能的解決方案。php
這是技術性角度最簡單,也許是最容易理解的解決方案。在這種方法中,將有一個許可的託管人充當受信任的第三方。該託管人將提供比特幣地址供用戶發送他們的比特幣,而後他們將相應數量的BTCT令牌發回給用戶。當用戶但願將他們的BTCT兌換成比特幣時,他們只需向託管人發送請求,託管人又將比特幣直接發送到用戶的地址。託管人可能會爲每次存取款收取一些費用以資助其運營。java
雖然託管人確實須要信任,但此解決方案的一大優點是用戶始終能夠驗證託管人在託管錢包中具備等量的比特幣。若是託管人行爲不誠實,用戶能夠利用徹底透明的公共記錄對託管人採起法律行動。這與USDT解決方案不一樣,在該解決方案中,若是進行審計,用戶須要信任審計決策,而且沒法採起獨立的法律行動。此外,在USDT系統中,審計將不是實時的,即人們須要等待保管人編制報告。node
上述解決方案儘管在實踐中可能運行良好,但須要集中實體做爲可信第三方。這與去中心化的想法相沖突,甚至可能帶來一些風險。例如,託管人有可能違反法律,留下用戶的錢,或者當事方之間的溝通可能因低效的監管管理而中斷或延遲。在本節中,咱們提供了一種新的解決方案,利用智能合約使BTCT的發行和贖回徹底無信任。python
該解決方案利用BTCRelay,一種在基於以太坊的智能合約中運行的比特幣輕客戶端。BTCRelay容許以太坊智能合約驗證比特幣交易,從而使以太坊在線實體可以檢查比特幣網絡上的支付是否實際發生。android
在這個解決方案中,有一個第三方將準備初始資本,以促進BTCT的發行和贖回。在用戶存入比特幣以前,該初始資金將是所需的保證金,即若是發生任何不良事件,用戶能夠得到此保證金做爲退款。爲簡單起見,做爲一個例子,Kyber Network能夠扮演第三方的角色,並在比特幣合約中提供ETH和ERC20令牌的保證金。而後,Kyber將提供比特幣地址,用戶能夠在其中存入比特幣以建立BTCT令牌。在確認用戶的存款後,Kyber在BitcoinToken合約中爲用戶建立相應數量的BTCT令牌。若是Kyber沒有發行新的BTCT令牌,用戶能夠將該merkle存款證實提交給BitcoinToken智能合約,而後該合約與BTCRelay進行通訊,以驗證用戶是否確實將比特幣存入Kyber。若是檢測到違規遊戲,BitcoinToken合同將喪失Kyber的部分保證金,並用它來支付給用戶。其餘用戶也能夠開始兌換BTCT令牌以得到他們的比特幣。因爲保證金的價值老是超過託管人持有的當前比特幣金額,所以用戶將得到比特幣的保證金。上面提到的場景以下圖所示。程序員
讓咱們考慮一個用戶但願將比特幣兌換成BTCT的狀況。他們須要作的是在BitcoinToken合約中調用他們想要接收比特幣的比特幣地址的「burn function」。Kyber將監聽銷燬的事件,並將相應數量的比特幣發送到用戶的比特幣地址。若是用戶沒有看到Kyber發送的付款,他們能夠經過調用BitcoinToken智能合約來挑戰Kyber(咱們可能須要用戶提供一些小額存款以防止濫用此功能)。若是Kyber沒法提供付款的有效證實(若是沒有付款,Kyber將沒法提供),Kyber的存款將被部分沒收,這樣用戶將得到更多的ETH和ERC20代幣,之後能夠賣掉他們的比特幣。其餘用戶,一旦發現Kyber未能付款,能夠要求兌換他們的BTCT。web
這種方法在可信託管方法之上提供了幾個很好的屬性。mongodb
然而,缺點是隨着採用的增加,解決方案須要更多資金。 編程
ETH和ERC20代幣的總存款必須至少等於發行的BTCT總額加上額外的安全邊際(10%-20%)以解釋價格波動。例如,對於BTCT的X美圓,咱們須要1.2倍的初始資本。另外一個主要缺點是,在無信託的託管人將數十億做爲抵押品的狀況下,潛在的安全風險。此外,它沒有徹底去中心化的事實可能意味着該實體能夠被一個集中的組織壟斷。安全
在上述解決方案中,強調BTCRelay須要開發和維護工做,而且對於以太坊Classic,Litecoin和ZCash的其餘發送而言將很是昂貴。此外,處理以太坊上的比特幣交易可能會引入一些複雜因素。在本節中,咱們提出了另外一種不涉及BTCRelay的解決方案,而且更加有效地簡化了流程。爲實現這一目標,咱們必需要求另外一個鏈支持基於EVM的智能合約。幸運的是,Rootstock將會開發而且它們與EVM兼容,他們已經使用聯合側鏈將比特幣從比特幣區塊鏈轉移到Rootstock。此解決方案也適用於其餘加密貨幣,如以太坊經典和其餘基於以太坊的貨幣。在本節中,當提到下面的比特幣時,除非另有說明,不然咱們將討論的是比特幣。
與以前的解決方案同樣,託管人仍須要將其保證金存放在以太坊鏈上,不管是在ETH仍是其餘ERC20代幣中,或二者兼而有之。此外,託管人還必須提供一筆小額的安全保證金,好比當前持有的比特幣金額的5%左右。Rootstock上的這筆保證金將存入比特幣,若是託管人在Rootstock連鎖店行爲不當,將對其進行處罰。
在用戶將X比特幣存入Rootstock上的DepositContract以後,託管人將簽署一條消息「X比特幣存放在塊Z處的以太坊上的Y」,將其提交給Rootstock上的DepositContract。而後,託管人將在以太坊上的BitcoinToken合約上發行相同數量的BTCT代幣。除非託管人因未能付款而受到質疑,不然只有託管人才有權將比特幣從Rootstock的DepositContract合約中移走。若是託管人未提供簽名消息,則用戶能夠對Rootstock進行質詢並得到存入的比特幣,並從Rootstock上的託管人的保證金中得到一些獎金。若是保管人在簽署消息後未能在以太坊上發行新的BTCT令牌,則用戶可使用已簽名的消息自行在以太坊上發出他們的BTCT令牌,並讓保管人因未履行其職責而受處處罰。
當用戶請求在以太坊上兌換他們的BTCT令牌時,他們會調用BitcoinToken合約上的burn函數,並提供他們的Rootstock地址來接收他們的比特幣。
託管人將簽署數聽說「兌換X比特幣以解決Rootstock的Y」並在以太坊上提交比特幣合約的消息。託管人而後將X比特幣轉移到Rootstock上的用戶地址以完成兌換。與發行過程相似,若是託管人要麼沒有在以太坊上提交已簽名的消息,要麼在砧木上進行比特幣轉移,則可能會受處處罰。
1.好處
2.缺點
鑑於利弊,咱們遵循的方法多是上述全部提案的混合。咱們但願爲用戶建立一個無信任且徹底兼容的平臺,以便將不一樣的加密貨幣移動到以太坊。具體而言,咱們計劃與擁有數字資產託管許可的合做夥伴合做,並與其餘加密基金合做爲保證金提供資金。咱們相信這是咱們長期運營的最佳方法,不會讓用戶犧牲其安全性或使監管機構更加困難。
最後但一樣重要的是,咱們認爲這一舉措不只有利於Kyber Network,也有利於整個生態系統。所以,咱們真的但願社區可以貢獻並幫助咱們構建解決方案並共同改進區塊鏈的採用。若是您有興趣參與此計劃,請經過電子郵件hello@kyber.network與咱們聯繫。
==================================================================
分享一些以太坊、EOS、比特幣等區塊鏈相關的交互式在線編程實戰教程:
- java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- php以太坊,主要是介紹使用php進行智能合約開發交互,進行帳號建立、交易、轉帳、代幣開發以及過濾器和交易等內容。
- 以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括帳戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。
- EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、帳戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
- java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- tendermint區塊鏈開發詳解,本課程適合但願使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI接口、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操代碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
這裏是原文如何將比特幣帶到以太坊區塊鏈